IE readonly проблема textarea - PullRequest
       28

IE readonly проблема textarea

2 голосов
/ 22 сентября 2010

Я вижу проблему в IE7 и IE8 (но не в других браузерах) с текстовой областью, когда я динамически изменяю ее атрибут «только для чтения». Текстовая область первоначально определяется как доступная только для чтения, и когда пользователь щелкает внутри текстового поля, я устанавливаю для readOnly значение false. На этом этапе, если я набираю какие-либо нормальные символы, они не отображаются - на самом деле текстовое поле действует так, как будто оно все еще доступно только для чтения (т. Е. Клавиши со стрелками перемещаются, нажатие кнопки «Удалить» приводит к переходу на предыдущую страницу и т. Д.). )

Если я снова нажму внутри текстовой области, набор текста будет работать нормально.

Вот фрагмент кода, который иллюстрирует проблему:

<html>
<head></head>
<body>
    <textarea id="txt1" onclick="document.getElementById('txt1').readOnly = false" readonly=true>Click in here and try typing.</textarea>
</body>
</html>

Я пробовал разные типы учений. Я попытался вручную вызвать focus () и click () в обработчике кликов. Я попытался установить таймер для установки флага readOnly. Я пытался использовать setAttribute () / removeAttribute (). Нет радости с любым из этих подходов.

Обновление

Я закончил тем, что использовал contentEditable, но только для IE - я все еще использую readOnly для FF и Safari / Chrome, потому что contentEditable, похоже, не работает для этих браузеров. Мне тоже придется перепроверить IE9.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Это работает, как задумано (Microsoft). Чтобы начать печатать, потребуется два щелчка, потому что при первом щелчке он все еще только для чтения, поэтому элемент не будет фокусироваться. Вам нужно либо сфокусировать элемент с помощью Javascript после изменения только для чтения, либо пользователям придется дважды щелкнуть. Это потому, что IE не фокусирует отключенный элемент, Chrome делает, даже если вы не можете печатать.

Изменить, чтобы добавить решение

В этом случае IE не нравится .focus();, но .select(); работает.

document.getElementById('yourTextareaId').onclick = function() {
    this.readOnly = false;
    this.select();
}
1 голос
/ 22 сентября 2010

Может быть, я неправильно понял вопрос, но я переключил onclick на onfocus, и он, кажется, работает нормально.

(Редактировать: это просто прямая копия вашего фрагмента, никаких типов документов или чего-либо еще, и просмотрв IE7.)

...