Сделать элемент DOM эффективным только для чтения

Я пишу элемент управления.NET формы для редактирования HTML с использованием MSHTML. Я создаю некоторые пользовательские элементы и хочу сделать их эффективно только для чтения. Я думал, что смогу сделать это, сосредоточившись на всем элементе в любое время, когда фокус вводится где-либо в этом элементе, но HtmlElement.Focus() не выделяет весь элемент, и мне кажется, что я не могу зафиксировать ввод курсора,

Другой вариант - вызывать событие всякий раз, когда изменяется текст элемента (на KeyDown, я ожидаю), но я также не могу запустить это событие. Любые идеи о том, почему мои ожидания о поведении событий неверны или альтернативные предложения для реализации?

2 ответа

Решение

Я обнаружил, что установка атрибута:

contentEditable=false

Результатом стало желаемое поведение.

Если вы пытаетесь применить поведение только для чтения к пользовательскому элементу управления вводом, вы можете попробовать использовать атрибут @readonly этого элемента управления. В противном случае вы также можете добавить прослушиватели событий для соответствующих событий пользовательского интерфейса (keydown, mousedown) и запретить их поведение по умолчанию (вернуть false или event.returnValue = false). Что касается пользовательских событий, вы действительно можете это сделать. Используйте имя события, которое известно IE. И еще один совет: зарегистрируйте обработчик события onchange и верните значение элемента управления в значение defaultValue (свойство любых элементов управления вводом).

Надеюсь, что некоторые идеи помогут.

Другие вопросы по тегам