2016-07-14 9 views
-2

私はテキスト入力があります。エントリがアルファであれば、ajaxルーチンが続きます。テキスト入力が数値の場合、私はajaxルーチンを避け、異なる(非ajax)ルーチンを実行したいが、Enterキーが使用されている場合のみ。私は入力文字列の最後にEnterがあるかどうかを判断しようとしています。文字列の末尾に<Enter>がありますか?

次は動作しません:

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

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

私もthisVal.substrを(-1)を試みました。同じ結果。 Enterキーを使用するかどうかをコードするにはどうすればよいですか? ヘルプをいただければ幸いです。

+3

これはテキストエリアでない限り、Enterを押すと、テキスト入力に文字を挿入しません。 –

+0

keypressイベントをキャプチャして、そのように 'enter'キーを監視する必要があります。例を見てください:http://stackoverflow.com/questions/979662/how-to-detect-pressing-enter-on-keyboard-using-jquery –

+0

はい、キーストロークイベントはあなたが探しているものです。改行は、複数行入力をサポートする要素にのみ追加されます。私の答えを見てください。 – Iceman

答えて

1

<enter>は入力フィールドの値に影響しないため、キーストロークイベントを使用して<enter>を識別します。これはテキストエリアでのみ発生します。ただし、この方法は編集可能なすべての要素で機能します。

$("#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

ありがとうございます。私はおそらくあなたのテクニックを将来使用するでしょう。一方、私はajaxルーチンに達する前に数値項目の処理(falseを返す)を行いました。ユーザーがEnterキーを押してサブミットした場合は、数値入力のためのon( 'submit'ルーチン)を入れます。これがはっきりしていることを望みます。 – Mffffffffffffff

関連する問題