Вы перехватываете событие keyup, вызываете функцию executeSearch и пропускаете событие, и в рамках этой функции вы затем вызываете .preventDefault()
для этого события, которое, как я считаю, предотвратит регистрацию нажатия клавиши на входе. 1002 *
Возможно, вы могли бы попробовать что-то вроде:
if (eventType !== "keyup")
evt.preventDefault();
Таким образом, нажатия на другие элементы будут предотвращены, но вы все равно сможете вводить данные поиска.
Пояснение:
Ваши три начальных слушателя событий, которые вы добавляете:
$('#clear_x').live('click', {name:'clear', id:selector}, performSearch);//clears search
$('#magnify').live('click', {name:'find', id:selector}, performSearch);//submits search
$('#searchbox').live('keyup', {name:'enter', id:selector}, performSearch);//submits search
Все вызывают одну и ту же функцию performSearch
. Внутри этой функции вы берете событие, которое вы только что перехватили evt
(в случае с окном поиска, которое является событием keyup), а затем вызываете для него метод .preventDefault () evt.preventDefault()
, который сообщает браузер отбрасывает свое поведение по умолчанию для этого события keyup, которое обычно состоит в добавлении символа клавиши, которую вы только что нажали, в поле ввода. Когда вы говорите evt.preventDefault()
, вы говорите браузеру: «Не делайте этого, позвольте мне вместо этого делать некоторые другие пользовательские вещи ...», поэтому браузер не будет добавлять это нажатие клавиши в поле ввода.
Ты со мной?