3

以下のhtmlページを作成しました。

<html>
    <head></head>
    <body>
        <input type="text" value="" id="Textbox" onchange="alert('text change');" />
        <input type="button" value="" onclick="document.getElementById('Textbox').value = 'Hello';" />
    </body>
</html>

入力したテキストがテキストボックスに入力されると、onchange イベントがうまく機能します。ボタンをクリックすると、「こんにちは」というテキストがテキストボックスに入力されるコードを書きました。しかし、テキストボックスの onchange イベントがうまくいきません。変更イベントをキャッチするにはどうすればよいですか? ありがとう。

4

4 に答える 4

4

プログラムで値を変更しても、変更イベントは発生しません。これは、ユーザーが要素にフォーカスし、値を変更してから、他の場所にフォーカスを置いた場合にのみ発生します。

オプションは、onchange リスナーを手動で呼び出すか、要素に変更イベントをディスパッチするか、onchange リスナーで親を探して DOM を呼び出して変更イベントを手動でバブルすることです。

法案に合うと思われる答えは次のとおりです。onchangeイベントを手動でトリガーします

いくつかのリンク:

  1. MDN dispatchEvent (標準準拠): https://developer.mozilla.org/en/DOM/element.dispatchEvent
  2. MSDN fireEvent (IE 専用): http://msdn.microsoft.com/en-us/library/ie/ms536423(v=vs.85).aspx
于 2012-06-27T02:29:33.590 に答える
0

すべての変更をキャプチャする場合は、keydown イベントを使用します。私の記憶が正しければ、 onChange は入力がぼやけた後にのみ発生します。

于 2012-06-27T02:32:51.630 に答える
0
function codeThatAltersTextFieldProgrammatically() {
    /* ... code ...  */

    textFieldChangeEventHandler();
};

function textFieldChangeEventHandler(){
    /* .... */
}
于 2012-06-27T02:35:22.777 に答える
-1

現在、コードによると、テキストボックスから出るとイベントが機能し、

ここでOnKeyPressを試す必要がありますhttp://jsfiddle.net/EBMyy/

このコードを参照してください

$(document).ready(function(){
    $("#Textbox").keypress(function(){
        alert("Text Changed");
    });
});​
于 2012-06-27T02:31:54.130 に答える