2016-12-07 1 views
0

スクリプト・コードをテキスト・ボックスの上に置くと機能しませんが、入力フィールドの下にコードを置くと機能します。Keydownスクリプトは入力ボックスの下にスクリプトコードを置くときだけ機能しますか?

<script src="js/jQueryv3.1.1.js" type="text/javascript"></script> 

<script> 
$("input").keydown(function(e){ 
    alert(); 
}); 
</script> 

<input type="number" id="phoneNo" /> 

BELOW

しかし動作しないが

<script src="js/jQueryv3.1.1.js" type="text/javascript"></script> 

<input type="number" id="phoneNo" /> 

<script> 
$("input").keydown(function(e){ 
    alert(); 
}); 
</script> 
+1

質問をするのを忘れました。しかし、とにかく、最初のものではブラウザは入力要素が解析される前に*スクリプトを実行するので、 '$(" input ")'はそれを見つけることができません。上記のスクリプトを記述したい場合は、DOM要素にアクセスしようとするコードの実行を遅らせるために、ドキュメントレディハンドラを使用する必要があります。 – nnnnnn

+0

@phpNoobこれは、jqueryの**。load()、.ready()**イベントを参照する必要がある場所です。 – Jai

+0

ありがとうございました – phpNoob

答えて

2

は$(ドキュメント).readyとあなたのコードをラップ()以下のような:

$(function() { 
    $("input").keydown(function(e){ 
     alert(); 
    }); 
}); 

または

$(document).ready(function() { 
    $("input").keydown(function(e){ 
     alert(); 
    }); 
}); 

jQueryのあなたが目の前に、それを定義するときに入力要素を見つけることができませんeの入力ボックス、しかし、入力ボックスの後に同じことを書くと、入力ボックスに関する情報が得られます。

ご希望の場合はお手数ですが、

0

はあなたが持っているとして、あなたは

$("input").keydown(function(e){ 
    alert(); 
}); 

を使用することができますalreadt定義された要素にハンドラをアタッチするとしますWORKS既に使われた。あなたは(あなたが後に作成されている1)動的な要素にイベントハンドラを添付する場合

しかし、あなたが使用することができます。

$(document).on('keydown', 'input', function(e){ 
    alert(); 
}); 
+0

OPのコードには、動的に作成された要素は含まれていません。 – nnnnnn

関連する問題