Есть ли какие-либо события для опции сброса для поиска ввода? - PullRequest
22 голосов
/ 22 марта 2010

В HTML5 есть новый тип ввода, «поиск». В большинстве браузеров это просто простой текстовый ввод, но для браузеров, основанных на webkit, он добавляет небольшой крест для сброса ввода.

Я бы хотел справиться с этим, есть ли событие для этого?

Ответы [ 8 ]

17 голосов
/ 13 марта 2012

Эта страница: http://css -tricks.com / webkit-html5-search-input / упоминает комментарий от Ajaxian:

Также есть некоторые пользовательские события, такие как «поиск», который запускает когда пользователь приостанавливает набор текста (установите для «incremental» значение true).

При тестировании я обнаружил, что это событие поиска также вызывается при очистке ввода (по крайней мере, в последней версии Safari).

5 голосов
/ 31 августа 2010

Кажется, что miketaylr верен, это событие невозможно отловить. См. Ответ на этот вопрос: Как вы обнаружите очистку "поискового" ввода HTML5?

Для того, чтобы быть совместимым со стандартами и не полагаться на одну функцию одного механизма компоновки, я предлагаю вам запустить свой код для события onChange, если новое текстовое значение пусто.

3 голосов
/ 02 августа 2013

Вы также можете прослушивать событие «input», оно более общее, чем событие «search», но все равно перехватывает параметр сброса.

3 голосов
/ 22 марта 2010

Нет, это невозможно. Это взаимодействие с пользовательским интерфейсом - это нечто хорошее, что реализует webkit, но на самом деле оно не предусмотрено. Смотрите здесь . Поэтому, даже если бы это было возможно - вы не можете ожидать, что этот пользовательский интерфейс будет реализован в Gecko, например, если и когда они когда-либо добавят type = search.

2 голосов
/ 10 октября 2016

Не уверен, если все еще кто-то ищет решение. Однако ниже фрагмент кода / уловки работал для меня. CSS для завершения скрыть значок clear (X) , и если вы не хотите скрывать значок clear (X) , но нужно обработать, тогда поможет фрагмент кода JS.

Хитрость CSS:

#textFieldId::-ms-clear {display: none;} - для определенного текстового поля

или

input[type=text]::-ms-clear { display: none; } - для всех текстовых полей в области видимости

ИЛИ

Трюк JavaScript (для сброса значения текстового поля на пустое / пустое и запуска 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);
    });
2 голосов
/ 24 июля 2010

Я не знаю, что это правильный ответ , но обработчик события 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.
})
0 голосов
/ 23 декабря 2015

попробуй эту надежду тебе поможет

$("input[name=search-mini]").on("search", function() {
 //do something
});
0 голосов
/ 25 июля 2013

Вы можете добавить условие, чтобы проверить, является ли содержимое поля поиска пустым, но это не очень хорошо, даже если время ожидания истекло, потому что сначала запускается код, а затем очищается поле. Другая проблема заключается в том, что код не будет реагировать на кнопку закрытия при редактировании поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...