2016-07-14 9 views
-2

Ich habe eine Texteingabe wo, wenn der Eintrag Alpha ist, eine Ajax-Routine folgt. Wenn der Texteintrag numerisch ist, möchte ich die Ajax-Routine vermeiden und eine andere (Nicht-Ajax-) Routine ausführen, aber NUR, wenn die Eingabetaste verwendet wird. Ich habe eine harte Zeit, um herauszufinden, ob am Ende der Eingabezeichenfolge eine Eingabetaste steht.Hat die Zeichenfolge am Ende <Enter>?

Die folgende nicht funktioniert:

thisVal=$(this).val();  // the user input value 
endChar = thisVal.charCodeAt(thisVal.substr(thisVal.length)) 

if (!isNaN(thisVal) && endhCar == 13){ 
    //Do the non-ajax routine 
} 

Ich habe auch versucht thisVal.substr (-1). Gleiches Ergebnis. Wie kann ich codieren, um die Eingabetaste zu verwenden oder nicht? Hilfe wird geschätzt.

+3

es sei denn, dies ein Textfeld, geben Sie drücken einfügen nicht um ein Zeichen in die Texteingabe. –

+0

Sie müssen Tastendruckereignisse erfassen und auf diese Weise nach der Taste "Enter" suchen. Siehe zum Beispiel: http://stackoverflow.com/questions/979662/how-to-detect-pressing-enter-on-keyboard-using-jquery –

+0

Ja, Key-Stroke-Ereignisse sind, was Sie suchen. newline wird nur in Elementen hinzugefügt, die mehrzeilige Eingabe unterstützen. Siehe meine Antwort. – Iceman

Antwort

1

Verwenden Sie Tastenanschlagsereignisse, um <enter> zu identifizieren, da sich <enter> nicht auf den Wert eines Eingabefelds auswirkt. Das passiert nur für Textbereiche. Diese Technik funktioniert jedoch für jedes bearbeitbare Element.

$("#target").keyup(function(e) { 
 
    var code = e.which; 
 
    if (code == 13) { 
 
    e.preventDefault(); 
 
    var data = ($(this).val()); 
 
    if (!isNaN(data)) { 
 
     alert("DO numeric AJAX"); 
 
    } else { 
 
     alert("DO alphanumeric AJAX"); 
 
    } 
 
    } 
 
});
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script src="https://code.jquery.com/jquery-2.2.4.js"></script> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 

 
<body> 
 
    TYPE AND HIT ENTER: 
 
    <input id="target" type="text" /> 
 
    <br>DIFFERENT RESPONSE FOR NUMERIC & ALPHA NUMERIC INPUTS 
 
</body> 
 

 
</html>

+0

Danke. Ich werde wahrscheinlich Ihre Technik in der Zukunft verwenden. In der Zwischenzeit habe ich einen Workaround gemacht, indem ich numerische Eingaben gemacht habe, bevor sie die Ajax-Routine erreichten. Wenn der Benutzer eine Eingabe durch Drücken der Eingabetaste durchführt, gebe ich eine Routine für numerische Eingaben ein ('submit'). Ich hoffe, das ist klar. – Mffffffffffffff

Verwandte Themen