0

メニューリストのポップアップリストを動的に作成しています。私は編集可能で開いている属性をtrueにします。私ができるようにしたいのは、ユーザーがまだ存在していないアイテムを入力したときに、新しいメニューリストアイテムを追加できるようにすることです。これは可能ですか?もしそうなら、どのように?

私は次のようにリストを作成しています:

var ml = document.createElement("menulist");
ml.setAttribute("editable","true");
ml.setAttribute("open","true");
ml.setAttribute("oncommand","alert(this.value)");
var mp = document.createElement("menupopup");
var mi = document.createElement("menuitem");
mi.setAttribute("label","item1");
mi.setAttribute("value","1");
mp.appendChild(mi);
//add as many items as i feel
ml.appendChild(mp);

値を変更すると、項目が変更されたときにアラート機能が起動しますが、何かを入力しても起動しません。基本的に、最終的には、ここから呼び出す関数に値を渡して、アイテムをリストに追加したいと思います。

4

1 に答える 1

1

まず、次のような属性を変更する代わりに、addEventListeneroncommandの使用を真剣に検討する必要があります。

ml.addEventListener("command", function(event) {
 alert(this.value);
}, false);

テキストフィールドの変更について通知を受け取りたい場合は、テキストフィールドにイベントリスナーを追加する必要があります。

ml.appendChild(mp);
ml.inputField.addEventListener("input", function(event)
{
  alert("Text field value changed");
}, false);

これは、要素がドキュメントに追加された後inputField、プロパティが定義されない前に実行する必要があることに注意してください(対応するXBLバインディングはまだ適用されていません)。

参考:menulist.inputFieldinputevent

于 2012-09-25T19:17:00.327 に答える