2012-12-14 14 views
10

Devo rilevare quando qualcuno preme "invio" in input di testo con una classe specifica.Rileva immettere elementi di input di una determinata classe

mio jQuery è la seguente:

$('input.large').keypress(function (e) { 
    if(e.which ==13) 
     console.log("pressed enter"); 
}); 

mio HTML è qualcosa di simile:

<tr><td> Personal Name </td></tr> 
<tr><td> <input type='text' class='large'> </td></tr> 

<tr><td> Email</td></tr> 
<tr><td> <input type='text' class='large'> </td></tr> 

Quando ho dato gli ID Campi e provato $('#elementid').keypress ha funzionato. Ma questo non funziona. Non ottengo output della console. Cosa mi manca?

+0

Hai inserito il codice all'interno del gestore di documenti? – undefined

+0

Ho. L'altro codice appena prima e dopo questo sta funzionando bene. – user961627

+0

Puoi fornire una demo su http://jsfiddle.net? – undefined

risposta

10

È possibile utilizzare dal vivo (.on()) eventi in document con keydown (penso che sia meglio) . Ti consentirà di rilevare keydown negli elementi attuali e futuri che corrispondono a un selettore.

HTML:

<strong>Personal Name</strong> 
<input type='text' class='large' /><br /> 

<strong>Email</strong> 
<input type='text' class='large' /> 
​ 

JS (eseguibile con jQuery 1.7+):

jQuery(document).on('keydown', 'input.large', function(ev) { 
    if(ev.which === 13) { 
     // Will change backgroundColor to blue as example 
     this.style.backgroundColor = '#EFF'; 

     // Avoid form submit 
     return false; 
    } 
}); 

jsFiddle: http://jsfiddle.net/qvhWD/

+0

dove dovrei metterlo? L'ho provato dentro '$ (document) .ready (function() {...});' e anche al di fuori di esso, ma in entrambi i casi c'era un errore di sintassi. – user961627

+0

Dove si trova questo errore di sintassi?** Provalo **: crea un elemento esclusivo '

2

controllare questo: http://jsfiddle.net/EJyyr/

usato questo html:

<tr><td> Personal Name </td></tr> 
<tr><td> <input type='text' class='large' id='a'> </td></tr> 

<tr><td> Email</td></tr> 
<tr><td> <input type='text' class='large' id='b'> </td></tr> 

e questo è il jQuery which logs the input text id

$('.large').keypress(function (e) { 
    if(e.which ==13) 
    console.log($(this).attr('id')); 
}); 
0

Grazie David Rodrigues per la spiegazione. Ha aiutato molto. Ho dovuto aggiornare la mia libreria JQuery e la funzione .live() si è fermata per funzionare correttamente.

È possibile utilizzarlo per il seguente

Seleziona tutti gli ingressi casella di controllo di un form quando clic sul checkbox tipo di ingresso select_all_checkboxes:

jQuery(document).on("click", "#select_all_checkboxes", function(){ 
    var chk = this.checked; 
    $('input[id=selectAll]').each(function(){ 
     this.checked = chk; 
    }); 
}); 

chiamare una funzione "checkMail" quando l'utente deve lasciare il campo utilizzando la scheda o facendo clic su qualsiasi campo che ha un nome di classe "email":

jQuery(document).on("blur", 'input.email', function(event){ 
    var email = $(this).val(); 
    if (!checkMail(email)) { 
     alert("Invalid email."); 
     $(this).focus(); 
    } 
}); 
+0

Mentre la tua risposta è apprezzata, un commento sulla risposta di un altro utente dovrebbe essere proprio questo. – J0e3gan

Problemi correlati