2009-10-28 19 views
6

Sto usando un e.which di jquery per eseguire una funzione alla pressione di INVIO, ma voglio che questa funzione venga chiamata solo se il particolare campo di input è focalizzato (dove il cursore lampeggia).e.quando il tasto ENTER è abilitato solo se il campo di immissione è attivo

La mia funzione jquery corrente.

$(document).keyup(function(e) { 
    if (e.which == 13) { 
     var page = $("#userpage").val(); 

     if(page > 0) { 
      $("#search").click(); 
     } else { 
      $('.save').click(); 
     } 
    } 
}); 

voglio che $ ("# ricerca") cliccare().; da chiamare solo se lo #search_text è focalizzato o ha qualche input, perché ho pochi campi di input in più e gli utenti tendono a premere invio, e su Enter viene chiamata questa funzione.

Grazie.

risposta

9

vorrei attaccare il listener di eventi per quello specifico elemento di input:

$('#search_text').keyup(function(e) { 
    if (e.which == 13) { 
     // do it 
    } 
}); 
+1

sono d'accordo, ma suggerirei di usare l'evento 'keypress' piuttosto che l'evento' keyup', dal momento che il fuoco prima e ha anche codici di caratteri affidabili per i caratteri stampabili in tutti i principali browser. –

0

Associare l'evento per l'elemento #search_text, invece dell'intero documento. In questo modo verrà attivato solo quando l'elemento ha il focus.

1

Basta aggiungere questa linea alla funzione all'interno del vostro secondo se dichiarazione:

$('#search_text').focus(function() 
-1

è inoltre necessario aggiungere : e.preventDefault();

$('document').keyup(function(e) { 
    if (e.keyCode == '13') { 
    e.preventDefault(); 
    var page = $("#userpage").val(); 
    } 
}); 
+0

Chiamare jQuery dando la stringa ''document'' non collega l'evento all'elemento del documento. Devi usare '$ (document)' invece, senza le virgolette. Inoltre, quando chiamate 'preventDefault()' tutti gli eventi "predefiniti" successivi non verranno più attivati. –

Problemi correlati