2016-06-24 8 views
1

私は1つのテキストフィールドとボタンを持っています。このボタンは、validate()という関数を呼び出します。現在のところ、ボタンをクリックした場合にのみ機能し、キーボードの「入力」を使用してキーボード入力を行うように変更しようとしています。私はチュートリアルから次のように書いていますが、それはうまくいかない - どのポインタですか?キーボードで 'Enter'を使用してフォームを送信する

<input type="text" name="textField" onkeypress="handle(event)" onfocus="clearT()" /> 


function handle(e){ 
    if(e.keyCode === 13){ 
    validate(); 
    } 
+0

私には正しいと思われる –

答えて

1

あなたがにonKeyDown getElementByIdをを使用しての代わりに、入力フィールド自体にonkeypressでは機能を置くことによってonkey関数を呼び出すことができます。

document.getElementById('my_id').onkeydown = function(e){ 
 
    if(e.keyCode == 13){ 
 
    validate(); 
 
    } 
 
}; 
 

 
function validate(){ 
 
alert('hi'); 
 
}
<input type="text" id="my_id" name="textField" onfocus="clearT()" />

+0

ありがとう - 私は実際にこれがなくても動作するようになっていますが、Enterを押すとすぐに正しい動作が起こります(メッセージがポップアップします)が、フィールドはクリアされ、離れて!私はなぜそれが起こっているのか分からない.... – Pineapple

+0

何が_dissapears_すぐに? [Fiddle](https://jsfiddle.net/)を作れますか? –

+0

申し訳ありません@アンジェルはウールリーです - 私は実際にはあまりにもその1つを働いてきました。私はちょっと使いやすさの欠陥を考え出しただけです。とにかく、私はキーボードの入力を押した後、私はテキストフィールドに焦点を失うことができますか? – Pineapple

0

<script> 
 
function handle(e) 
 
{ 
 
    if(e.keyCode === 13) 
 
\t { 
 
    \t validate(); 
 
    } 
 
} 
 
function validate() 
 
{ 
 
\t alert("hello"); 
 
} 
 
</script> 
 
<body> 
 

 
<input type="text" name="textField" onkeypress="handle(event)" /> 
 
    
 
</body>

0

使用しているコードは罰金ですが、私はあなたがhandle機能に構文エラーがあると仮定 - if文のため}を逃します。そして、keyCodewhichの両方をチェックすることは常に良い考えです。

function handle(e){ 
 
    var key = e.keyCode || e.which; 
 
    if(e.keyCode === 13){ 
 
     e.target.blur(); // blur 
 
     console.log('proceeding to validate()'); 
 
    } 
 
} 
 
function clearT(){ 
 
}
<input type="text" name="textField" onkeypress="handle(event)" onfocus="clearT()" />

+0

アダムに感謝します。あなたが指摘したように私は構文エラーがありました!私はちょっと使いやすさの欠陥を考え出しました。とにかく、私はキーボードの入力を押した後、私はテキストフィールドに焦点を失うことができますか? – Pineapple

+0

@Pineapple、私はフィドルを更新しました。 '.blur()'は要素を非フォーカスにします –

0

また、フォームのをonSubmitイベントに検証を移動することができます。このアプローチでは、キーストロークをキャプチャして調べる必要がなくなります。次のように:

ワイヤーフォームのをonSubmitイベントアップjavascript関数へ:

HTML

<form id="world" name="world" onsubmit="validate(event)"> 
    <input type="text" name="textField" /> 
    <input type="submit" value="Submit" /> 
</form> 

はJavaScript

function validate(event) { 
    event.preventDefault(); 
    console.log('This is validate'); 
} 

だから、HTMLフォームがあるとき集中し、 Submitをクリックするか、validateメソッドが呼び出されるEnterキーを押します。w 1つのページに複数のフォームを持つork。キーストーク管理コードを書いて(書き直すのではなく)、ブラウザのデフォルトの動作を使用するので、よりクリーンな解決策に思えます。