Доступны ли какие-либо события для параметра reset для входного поиска?
В HTML5 есть новый тип ввода - "поиск".
В большинстве браузеров он просто остается на простом "текстовом" входе, но для браузеров на основе webkit он добавляет немного креста к вводу reset.
Я хотел бы иметь возможность справиться с этим, есть ли для этого событие?
Ответы
Ответ 1
Нет, это невозможно. Это взаимодействие с пользовательским интерфейсом - это некоторая доброта, которую реализует webkit, но на самом деле она не указана. См. здесь. Поэтому, даже если это было возможно - вы не можете ожидать, что этот интерфейс будет реализован в Gecko, например, если и когда они когда-либо добавят type = search.
Ответ 2
Эта страница: http://css-tricks.com/webkit-html5-search-inputs/ упоминает комментарий от Ajaxian:
Также есть некоторые пользовательские события - например, поиск, который срабатывает когда пользователь приостанавливает ввод текста (установите "incremental to true" ).
При тестировании я обнаружил, что это событие поиска также вызывается, когда вход очищается (по крайней мере, в последней версии Safari).
Ответ 3
Кажется, что miketaylr верен, это событие невозможно поймать. См. Ответ на этот вопрос: Как вы обнаруживаете очистку "поиска" ? Вход HTML5?
Чтобы соответствовать стандартам и не полагаться на одну особенность одного механизма компоновки, я предлагаю вам запустить ваш код в событии onChange
, если новое текстовое значение пуст.
Ответ 4
Я не знаю, что это правильный ответ, но обработчик события click
вызывается, когда пользователь очищает вход с помощью кнопки X.
$('input[type="search"]').click(function(event) {
// This code runs anytime a user clicks on the input,
// including when they clear it using the X button.
})
Ответ 5
Вы также можете прослушивать событие "вход", это более общее, чем "поиск", но все еще ловит параметр reset.
Ответ 6
Вы можете добавить условие, чтобы проверить, пусто ли содержимое поля поиска, но все это не хорошо даже с таймаутом, потому что он сначала запускает код, затем очищает поле.
Другая проблема заключается в том, что код не реагирует на кнопку закрытия при редактировании поля
Ответ 7
попробуйте эту надежду, помогите вам
$("input[name=search-mini]").on("search", function() {
//do something
});
Ответ 8
Не уверен, если кто-то ищет решение. Однако ниже фрагмент кода/трюки работал у меня. CSS, чтобы скрыть значок clear (X), и если вы не хотите скрывать значок clear (X), но ему нужно обработать, то фрагмент кода JS поможет.
Трюк CSS:
#textFieldId::-ms-clear {display: none;}
- для конкретного текстового поля
или
input[type=text]::-ms-clear { display: none; }
- для всех текстовых полей в области
ИЛИ
JavaScript-трюк (до reset значение текстового поля для пустого/пустого и загорать событие HTML-события KeyUp. Соответственно, вы можете изменить в соответствии с вашими потребностями)
$('#textFieldId').bind("mouseup", function() {
var $input = $(this);
var oldValue = $input.val();
if (oldValue == "") {
return;
}
setTimeout(function() {
var newValue = $input.val();
if (newValue == "") {
$input.trigger("keyup");
}
}, 1);
});