Эмуляция значка "Очистить ввод" в веб-приложении, ориентированном на iOS

Родные приложения для iOS содержат "кнопки очистки" в полях ввода. Они очищают текст, сохраняя фокусировку поля.

Я занимаюсь разработкой веб-приложения, специально предназначенного для устройств iOS, и мне не везет подражать поведению. Если я наложу другой элемент на событие щелчка, чтобы очистить и перефокусировать ввод, iPad проигнорирует призыв к фокусировке, поскольку он начинает скрывать клавиатуру в тот момент, когда событие размытия срабатывает на входе (до события щелчка). Поэтому пользователь должен вручную перефокусировать поле после нажатия на значок очистки, чтобы вернуть клавиатуру.

Есть ли способ получить сенсорное событие на оверлейном изображении / значке, если бы программная клавиатура не приняла решение исчезнуть, или лучший способ сделать это?

1 ответ

Решение

2-й комментарий daxelrod выше привел меня к решению: перехватить событие mousedown на значке очистки, остановить его и очистить ввод. Таким образом, "щелчок" никогда не происходит, и ввод не теряет фокус.

Я думал, что blur() сработал на уровне браузера до того, как произошло какое-либо из событий мыши (вниз, вверх, щелчок), поэтому я не подумал попробовать. Рад видеть, что я был не прав!

В Mootools со вкусом JS:

document.id('inputClearImage').addEvent('mousedown', function (e) {
    e.stop();
    document.id('input').set('value', '');
});
Другие вопросы по тегам