2012-12-14 13 views
10

Ich muss erkennen, wenn jemand in Texteingaben mit einer bestimmten Klasse "Enter" drückt.Erkennen Eingabe in Eingabeelemente einer bestimmten Klasse

Meine jQuery ist wie folgt:

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

Mein HTML ist so etwas wie dieses:

<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> 

Wenn ich habe die Felder IDs gegeben und versucht $('#elementid').keypress es funktionierte. Aber das funktioniert nicht. Ich bekomme keine Konsolenausgabe. Was vermisse ich?

+0

Haben Sie Ihren Code in Document Ready Handler? – undefined

+0

Ich habe. Anderer Code kurz davor und danach funktioniert einwandfrei. – user961627

+0

Können Sie eine Demo auf http://jsfiddle.net bereitstellen? – undefined

Antwort

10

können Sie Live verwenden (.on()) Ereignisse in document mit keydown (Ich denke, das ist besser) . Damit können Sie keydown in aktuellen und zukünftigen Elementen erkennen, die mit einem Selektor übereinstimmen.

HTML:

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

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

JS (runnable mit 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

wo soll ich das hinstellen? Ich habe es in '$ (document) .ready (function() {...});' und auch außerhalb davon versucht, aber so oder so gab es einen Syntaxfehler. – user961627

+0

Wo ist dieser Syntaxfehler?** Versuchen Sie es **: Erstellen Sie ein exklusives '

2

Kontrolle dieses: http://jsfiddle.net/EJyyr/

verwendet, um dieses 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> 

und dies ist die jQuery which logs the input text id

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

Dank David Rodrigues für Ihre Erklärung. Es hat sehr geholfen. Ich musste meine JQuery-Bibliothek aktualisieren, und die .live() - Funktion wurde angehalten, um ordnungsgemäß zu funktionieren.

Sie können es auf den folgenden verwenden

alle Eingänge Kontrollkästchen eines Formulars auswählen, wenn Klick auf select_all_checkboxes Eingabetyp Checkbox:

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

Aufruf einer Funktion „Check“, wenn der Benutzer das Feld verlassen Verwenden Sie die Tabulatortaste oder klicken Sie auf ein beliebiges Feld mit dem Klassennamen "email":

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

Während Ihre Antwort geschätzt wird, sollte ein Kommentar zur Antwort eines anderen Benutzers genau das sein. – J0e3gan

Verwandte Themen