Нет всплывающего окна с данными, когда только чтение не сбрасывается событием - PullRequest
0 голосов
/ 24 марта 2019

Мой элемент ввода текста связан с элементом списка данных и установлен только для чтения.При нажатии на элемент ввода его свойство readonly становится неустановленным.Но всплывающее окно списка данных не отображается при вводе текста.

Но оно появляется, когда вы расфокусируете элемент ввода и перефокусируете его.

window.onload = init;
		
function init() {
  var e = document.getElementById('myText');
  e.addEventListener('click', function() { this.readOnly = false; });			
}
<html>
  <body>
    <input type='text' id='myText' list='myList' readonly>
    <datalist id='myList'>
      <option>
        Test1
      </option>
    </datalist>
  </body>
</html>

Я использую Firefox 66.0.1.

/ edit: Возможно, это поведение безопасности Firefox с ненадежными событиями?Кто-нибудь может это подтвердить?

1 Ответ

0 голосов
/ 24 марта 2019

Я исправил это, изменив событие с click на mousedown.

e.addEventListener('mousedown', function() { this.readOnly = false; });         

Мое объяснение этому состоит в том, что элемент списка данных проверяет атрибут readonly входного элемента, когда происходит событие фокуса, и после этого решает, следует ли ему рисовать или нет. Событие фокуса происходит по событию mousedown. Но событие click происходит после события mousedown. Поэтому атрибут readonly изменился после того, как специалист по проверке данных проверил атрибут readonly.

...