У меня странная ошибка, ну, у MSIE.
Кажется, что это происходит на всех основных версиях MSIE: 6, 7, 8 и 9 (!)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" ><head><title>test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
var test=jQuery('#in');
test.focus(function(){
if(test.val()=='empty')test.val('');
test.attr('readonly',false);
});
test.blur(function(){
if(test.val()=='')test.val('empty');
test.attr('readonly',true);
});
});
</script>
</head><body>
<input type="text" value="empty" readonly="readonly" id="in"/>
</body></html>
Позвольте мне объяснить, как работает эта система и что происходит не так.
Когда пользователь щелкает (фокусирует) поле ввода, поле ввода следует сделать редактируемым (т. Е. Потерять флаг readonly). Затем, когда он покидает поле ввода (т. Е. Событие размытия), выполняется некоторая обработка (не показана в коде), и поле ввода выполняется только для чтения.
Это работает как чудо в большинстве браузеров (Firefox, Opera, на основе WebKit), но не в любой версии IE (включая 9 бета).
Проблема в том, что в IE пользователь должен дважды щелкнуть поле ввода.
В этот момент вы могли бы спросить, оставлено ли поле ввода только для чтения в первый раз?
Нет. Я проверял это, javascript сообщает, что это редактируемое.
Простое исправление, просто запустите событие щелчка в поле ввода (чтобы смоделировать поведение двойного щелчка пользователя), нет?
Нет, .click()
и .focus()
оба не выполнены. Понятия не имею, почему.
Редактировать: Знайте, что курсор появляется в текстовом поле, по крайней мере, заметно.
Важно: Люди, пожалуйста, по крайней мере, попробуйте код, прежде чем ответить!