Я создал расширения jquery, которые скрывают мои элементы выбора и вместо этого добавляет пользовательскую разметку. Это так, что я могу укладывать элементы и выполнять некоторые пользовательские behvaiour (например, добавление изображений к элементам)Как я могу поймать попытку сосредоточиться на скрытом объекте?
Это то, что разметка будет выглядеть в простом примере:
<select id="original" style="display:none"><option value="1">1</option><select>
<ul id="new" class="select">
<li>1</li>
</ul>
Я также использовать другой jquery-extension для проверки форм. Если поле недействительно, оно пытается сфокусировать это поле. Браузеры не позволят сосредоточиться на скрытых полях. Это проблема в основном потому, что если поле не сфокусировано, браузер не будет прокручиваться до места, где это недопустимое значение.
Моим решением для сновидений было бы добавить слушателя для попыток сфокусировать элемент select, но я не могу использовать обычный $('parent').on('focus', "#original ...)
, потому что события не запускаются на display:none
-объектах. Я также считал, что скрывать элемент каким-то другим способом, но по крайней мере visbility: hidden
также не позволит фокусироваться.
Как сфокусировать либо оригинал, либо новый элемент? Когда делается попытка сфокусировать исходный элемент?
семантически (и логически), что невозможно сфокусировать то, что не видно. Возможно, вы должны попробовать совершенно другой подход, возможно, не прокручивать входные данные, а прокручивать до пункта/раздела. Или поставьте какой-то «if» перед * попыткой *, чтобы проверить видимость элементов. – DanFromGermany
Уверен, и все в порядке, я мог бы сфокусировать #new, что видно. Но какое событие может вызвать этот фокус? – Himmators
непрозрачность: 0 может помочь? но разница в том, что невидимые элементы против не отображаемых элементов занимают место на странице –