2011-08-30 6 views
11

Mam formularz korzystający z wtyczki autouzupełniania jquery UI, http://jqueryui.com/demos/autocomplete/, która działa tylko z wyjątkiem sytuacji, gdy naciśniesz klawisz Enter, aby wybrać pozycję w autouzupełnianiu listę, przesyła formularz.Zatrzymaj formularz podania "Enter" podczas korzystania z widgetu autouzupełniania jquery ui

Używam tego w witrynie sieci web .NET, więc może istnieć obsługa javascript związana z formularzem, który jest wstrzykiwany .NET, który nadpisuje rzeczy jQuery (spekuluję tutaj).

Odpowiedz

14

Możesz użyć obsługi zdarzenia na nim.

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

patrz: jQuery Event Keypress: Which key was pressed?

również: http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/javascript-char-codes-key-codes.aspx na liście kody klawiszy

+0

Dobry przykład! Spróbuj również '... if (code == $ .ui.keyCode.ENTER) {return false; } ... '. Look a souce https://api.jqueryui.com/jQuery.ui.keyCode/ .. jzm thanks – KingRider

4

Jednym ze sposobów jest naciśnięcie klawisza i zignorowanie go, jeśli jest to klawisz Enter.

+1

Ale chcę tylko ignorować klawisz enter, jeśli jest naciśnięty, gdy wybierając opcję z listy autouzupełniania. Jeśli użytkownik nie jest skoncentrowany na liście opcji autouzupełniania, to ja_ chcę, aby formularz został przesłany. –

+1

@JohnieKarr: Masz ochotę zobaczyć odpowiedź na pytanie, którego szukałem ... –

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

Odpowiedź ace po pomógł mi rozwiązać mój problem. Chociaż należy zauważyć, że kod as musi być dostępny przed $('input').autocomplete(*****), w przeciwnym razie nie otrzymasz żadnego efektu.

2

Jeśli nadal chcesz kluczem do przedstawienia wejść, po wyborze autouzupełnianie jest wykonany,

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

Ten nie działa dla mnie, ponieważ kiedy wydarzenie dostaje moją funkcję zwrotną, autouzupełnianie nie jest już widoczne. –

Powiązane problemy