2011-08-30 3 views
11

У меня есть форма, в которой используется плагин UQ для автозаполнения jquery, http://jqueryui.com/demos/autocomplete/, который все работает сладко, за исключением случаев, когда вы нажимаете клавишу ввода, чтобы выбрать элемент в автозаполнении список, он представляет форму.Отключить форму ввода ключа при использовании jquery ui автозаполнения виджета

Я использую это на сайте .NET webforms, поэтому может быть обработка javascript, связанная с формой, которую вводит .NET, которая переопределяет материал jQuery (я размышляю здесь).

ответ

14

Вы можете использовать обработчик событий на нем.

$("#searchTextBox").keypress(function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if(code == 13) { //Enter keycode 
     return false; 
    } 
}); 

см: jQuery Event Keypress: Which key was pressed?

также: http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/javascript-char-codes-key-codes.aspx для списка кодов клавиш

+0

Хороший пример! Попробуйте также '... if (code == $ .ui.keyCode.ENTER) {return false; } ... '. Посмотрите на souce https://api.jqueryui.com/jQuery.ui.keyCode/ .. jzm thanks – KingRider

4

Один из способов - нажать клавишу и проигнорировать ее, если это клавиша ввода.

+1

Но я только хочу, чтобы игнорировать клавишу ввода, если она нажата при выборе опции из списка автозаполнения. Если пользователь не сфокусирован на списке опций автозаполнения, тогда я _do_ хочу, чтобы форма была отправлена. –

+1

@JohnieKarr: Приятно видеть, что ты отвечаешь на вопрос, который я искал ... –

5
$("#autocomplete_field_id").keypress(function(event){ 
    var keycode = (event.keyCode ? event.keyCode : event.which); 
    if (keycode == '13') { 
    event.preventDefault(); 
    event.stopPropagation();  
    } 
}); 
2

Ответ туз пост помог мне решить мою проблему. Несмотря на то, что вы должны заметить, что код ace обеспечивает, должен существовать до $('input').autocomplete(*****), иначе вы не получите никакого эффекта.

2

Если вы все еще хотите, чтобы ввести ключ представить, после того, как выбор сделан автозаполнения,

if (evt.keyCode === 13 && !$('.ui-autocomplete').is(':visible')) { 
    $('.ui-button:first').click(); 
} 
evt.stopPropagation(); 
+2

Это не работает для меня, потому что когда событие переходит к моей функции обратного вызова, автозаполнение уже не видно. –

Смежные вопросы