Как выделить поле ввода текста при нажатии на него в Safari? - PullRequest
4 голосов
/ 11 ноября 2008

Мне бы хотелось, чтобы значение вводимого текстового поля было выделено, когда оно получило фокус, либо щелкнув его, либо добавив табуляцию к нему.

<html>
<body>

<script>
function focusTest(el)
{
   el.select();
}
</script>

<input type="text" value="one" OnFocus="focusTest(this); return false;" />
<br/>
<input type="text" value="two" OnFocus="focusTest(this); return false;" />

</body>
</html>

Если щелкнуть любое поле ввода в Firefox или IE, это поле подсвечивается. Тем не менее, это не работает в Safari. (ПРИМЕЧАНИЕ: работает при переходе между полями.)

Ответы [ 2 ]

7 голосов
/ 11 ноября 2008

Я заметил, что Safari фактически выделяет текст, а затем быстро удаляет выделение.

Итак, я попробовал этот быстрый обходной путь, который работает во всех браузерах:

function focusTest(el)
{
  setTimeout (function () {el.select();} , 50 );
}

Редактировать:
После дальнейшего тестирования выясняется, что событие OnMouseUp очищает выделение, поэтому достаточно добавить

onMouseUp="return false;"

к элементу ввода, чтобы все работало как надо.

0 голосов
/ 11 ноября 2008

Не уверен насчет решения, специфичного для Safari, но альтернативой было бы заключить элемент ввода в элемент div и установить его свойства границы с помощью CSS. Затем измените цвет границы и т. Д., Когда сфокусировано и не сфокусировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...