0

OnKeyPressイベントの後にテキストボックスの値を取得するにはどうすればよいですか?たとえば、次のコードがあるとします。

<input type = "number" id = "foo" onKeyPress = "submit();"/>
<script type = "text/javascript">
function submit()
{
var textValue = document.getElementById("foo").value;
alert(textValue);
}
</script>

残念ながら、これは機能しません。これは、OnKeyPressがトリガーされた後も、変数textValueが1文字遅れているためです。私は使用しますOnKeyUpが、残念ながら<input type = "text">、私の状況で機能しない場合を除いて、Androidデバイスでは機能しません...誰かがこれを行う方法を知っていますか?

4

4 に答える 4

2

代わりに、入力の値が変更された後に発生するイベントを使用することをお勧めしinputます(たとえば、入力された文字、削除、貼り付け、ドラッグアンドドロップなど)。これは、IE<9を除くすべての主要なブラウザーで機能します。

document.getElementById("foo").addEventListener("input", function() {
    alert("CHANGED!");
}, false);
于 2012-08-15T12:01:43.667 に答える
1

次のコードを試してください

<input type = "number" id = "foo" onKeyPress = "submit(this);"/>
    <script type = "text/javascript">
    function submit(e) {
      alert(e.value);
    }
    </script>
于 2012-08-15T10:44:07.383 に答える
1

唯一の問題がAndroidデバイスである場合は、他のすべての人にonkeyupを使用することをお勧めします。次に、それがAndroidであるかどうか(または入力でキーアップがサポートされているかどうか)を検出し、必要に応じて、Android固有のソリューションを実装できます。

function submit(){
    function submitNow() {
        var textValue = document.getElementById("foo").value;
        alert(textValue);
    }   
    if(isAndroid) {
        setTimeout(submitNow, 10);
    }
    else {
        submitNow() ;
    }
}

var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1; 
var eventType = (isAndroid) ? "keyup" : "keypress" ;
document.getElementById("foo").addEventListener(EventType, submit);

その後、入力からを削除できonKeyPress = "submit();"ます。

Androidを使用していない場合、このコードはキーアップイベントを使用して正常に動作します。クライアントがAndroidを使用している場合、入力が更新されるのに十分な時間である1/100秒待機しますが、短すぎて目立たなくなります。

通常、キーを長押ししないように警告しますが、それらをサポートするAndroidキーボードを認識していません。

Androidソリューションのみ:

function submit(){
    function submitNow() {
        var textValue = document.getElementById("foo").value;
        alert(textValue);
    }   
    setTimeout(submitNow, 10);
}

document.getElementById("foo").addEventListener("keyup", submit);

onKeyPress = "submit();"あなたが本当にそれを感じたなら、あなたはあなたを保つことさえできます。ここで最後の行を削除するだけです。

于 2012-08-15T10:45:32.150 に答える
1

jQueryを使用してみましたか?

jQueryをページに追加するに <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>は、ページの先頭に配置するだけです。

次に、必要なアクションを実行するには、コードを使用します

<script type="text/javascript">
  $("#my_field").keydown (function (e) {
      alert ($(this).val());
  });
</script>

ここで、#myFieldはフィールドのIDです。

注意:入力にkeypressイベントは必要ありません。

于 2012-08-15T10:45:43.267 に答える