проблема с обработкой формы Chrome: вход onfocus = “this.select ()”

Я думаю, что вы можете делать то, что вы хотите, с условной агрегацией:

SELECT time, 
       COUNT(*) FILTER (WHERE username = 'jon') as cnt_jon,
       COUNT(*) FILTER (WHERE username = 'bob') as cnt_bob
FROM My_With
GROUP BY time;

Или, с меньшим набором:

SELECT time, 
       SUM( (username = 'jon')::int ) as cnt_jon,
       SUM( (username = 'bob')::int ) as cnt_bob
FROM My_With
GROUP BY time;
25
задан Matthew Crumley 28 August 2011 в 00:00
поделиться

8 ответов

Вместо привязки к событию onfocus вы должны привязать это действие к событию onclick, и оно будет работать так, как вы хотели.

<input onclick="this.select()" id="txt1" name="txt1" type="text" value="Search">
22
ответ дан Bakhtiyor 28 November 2019 в 18:29
поделиться

Это работает лучше всего для меня ...

<input type="text"  onfocus="this.searchfocus = true;" onmouseup="if(this.searchfocus) {this.select(); this.searchfocus = false;}" />

Событие mouseup срабатывает после включения.

5
ответ дан iLawton 28 November 2019 в 18:29
поделиться

Я обошел это путем создания функции-обертки, которая использует setTimeout() для задержки фактического вызова select(). Затем я просто вызываю эту функцию в событии focus текстового поля. Использование setTimeout откладывает выполнение до тех пор, пока стек вызовов снова не станет пустым, что будет, когда браузер завершит обработку всех событий, произошедших при нажатии (mousedown, mouseup, click, focus и т. Д.). Это что-то вроде хака, но это работает.

function selectTextboxContent(textbox)
{
    setTimeout(function() { textbox.select(); }, 10);
}

Затем вы можете сделать что-то вроде этого, чтобы сделать выбор в фокусе:

<input onfocus="selectTextboxContent(this);" type="text" value="Search">
3
ответ дан Jason 28 November 2019 в 18:29
поделиться

Просто используйте <input onmouseup=select()>. Это работает во всех браузерах.

2
ответ дан icache 28 November 2019 в 18:29
поделиться

Этот вопрос был опубликован пять лет назад, но с помощью HTML5 вы можете сделать эту функцию с помощью атрибута placeholder.

<input type="text" name="fname" placeholder="First name">
2
ответ дан Andrew Koper 28 November 2019 в 18:29
поделиться
onfocus="setTimeout(function(){select(this)})" 

или onfocus="setTimeout(function(){select(this)},118)" для Firefox.

1
ответ дан Alexander V. Ulyanov 28 November 2019 в 18:29
поделиться

Спасибо ilawton . Это работает для меня

    <input type="text"  onfocus="this.searchfocus = true;" onmouseup="if(this.searchfocus) {this.select(); this.searchfocus = false;}" />
0
ответ дан Noor Muhammad 28 November 2019 в 18:29
поделиться

Если вы действительно настаиваете на использовании onfocus, вам также необходимо добавить onmouseup = "return false" .

17
ответ дан 28 November 2019 в 18:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: