Если вы не вызываете preventDefault()
в своем коде обработчика, браузер автоматически передает событие касания в реализацию по умолчанию (после того, как вы думаете, что обработали его). Реализация по умолчанию состоит в выборе поля.
Итак, в вашем случае, вызовите preventDefault()
и stopPropagation()
в вашем обработчике и верните false. Это предотвращает дальнейшее всплескивание события. Тогда вы можете полностью контролировать свой элемент ввода.
Предостережение: Вы также потеряете поведение по умолчанию для поля ввода! Другими словами, вы не сможете вводить текст в поле! Или, если поле ввода - <select>
, вы не сможете открыть список и т. Д.
Полагаю, вы действительно хотите: 1) Если пользователь нажимает и удерживает в течение 500 мс, затем желтеет, 2) и / или при отпускании активирует поле ввода. В этом случае вам придется вручную переопределить событие вверх, если вы действительно хотите использовать поле ввода.
Такая ситуация очень распространена при программировании iPad. Например, во многих случаях вы хотели бы обнаружить движение с помощью сенсорного перетаскивания (даже в поле ввода) и интерпретировать его как движение, но интерпретировать движение с отпуском касания (без перемещения) как щелчок, чтобы активировать поле ввода , Вы должны сделать то, что я предлагаю выше: preventDefault()
и обновить событие при необходимости.