3

「onchange」属性を使用して新しい入力フィールドを動的に追加しようとしています。

    var f = document.getElementById("dN[" + fieldsd + "]"); // create/insert new
    el = document.createElement("input");
    el = f.appendChild(el);
    el.name = "dName[" + fieldsd + "]";
    el.id = "dName[" + fieldsd + "]";
    el.onchange =  "validation()";

setAttribute も試しましたが、どちらもうまくいきません。これを機能させる方法または回避策はありますか?

4

1 に答える 1

10

JavaScriptでは、onchangeプロパティを実際の文字列ではなく関数へのポインタに設定します。

var f = document.getElementById("dN[" + fieldsd + "]"); // create/insert new
el = document.createElement("input");
el = f.appendChild(el);
el.name = "dName[" + fieldsd + "]";
el.id = "dName[" + fieldsd + "]";
el.onchange =  validation;

(という名前の関数がある場合validation

パラメータを渡す必要がある場合onchangeは、検証関数を呼び出す関数に設定します。

el.onchange = function () {  
    validation(param1, param2, ...);
};

または、入力自体からの情報が必要な場合は、関数this内でキーワードを使用できます。validation

el.onchange = validation;

....

function validation() {
    // this is the "context" for the function.  In this case
    // the element that changed.
    var value = this.value;

}
于 2013-03-11T14:58:05.367 に答える