2017-12-19 52 views
0

これはComboBoxのバグか私の実装のエラーか分かりません。私はComboBoxに配列の値を書き込んでいます。 ComboBoxはほとんどの場合動作しているようです。すべての値があり、デフォルト値が設定されています。提案が出ています。唯一の問題は、マウスでクリックしてドロップダウンオプションを選択できないことです。私は矢印ボタン+ Enterを使用してオプションを選択することしかできません。これは設計かバグか?ここでDojo - dijit/ComboBox - マウスが選択されていません

は、テンプレートのウィジェットのために、私のHTMLの抜粋です:

<td style="width:25%;"><input data-dojo-attach-point="testReports" data-dojo-type="dijit/form/ComboBox"></input></td> 

ここに私のJavaScriptコードです。私は、コンボボックスを移入し、HTMLテンプレートにそれを置く:

var reportStore = new Memory(); 
for(i = 0; i < this.parent.reportNames.length; i++){ 
    var reportObject = {}; 
    reportObject.id = i; 
    reportObject.name = this.parent.reportNames[i]; 
    reportStore.put(reportObject); 
} 
this.testReports.set("id", "reportsDropDown"); 
this.testReports.set("name", "reports"); 
this.testReports.set("value", this.parent.reportNames[0]); 
this.testReports.set("store", reportStore); 
this.testReports.set("searchAttr", "name"); 

は、私は、マウスの選択作業を取得するために検討すべきである何か他のものはありますか?

ありがとうございました!

答えて

0

入力タグにonchangeイベントを追加しようとしましたか?これは、マウスを使用して行われたリストの変更をピックアップして選択する必要があります。

<input data-dojo-attach-point="testReports" data-dojo-type="dijit/form/ComboBox" onchange="processComboChange(this)"></input> 
0

私は別の方法をプラグインを定義しようと、今で動作しているようだ:

HTML:

<td style="width:25%;"><input data-dojo-attach-point="testReports"></td> 

はJavaScript:

var reportStore = new Memory(); 

for(i = 0; i < this.parent.reportNames.length; i++){ 
    var reportObject = {}; 
    reportObject.id = i; 
    reportObject.name = this.parent.reportNames[i]; 
    reportStore.put(reportObject); 
} 

var comboBox= new ComboBox({ 
    id: "reportsDropDown", 
    name: "reports", 
    value: this.parent.reportNames[0], 
    store: reportStore, 
    searchAttr: "name" 
}, this.testReports).startup(); 

私がいることを把握しています私が試したもう1つの方法は、物事をロードする必要があるという命令を乱すことでした。他の誰かがそれをよりよく説明できるかどうかは分かりませんか?

0

私はあなたの問題の原因を正確にはわかりませんが、ウィジェットを作成するためのプログラム的かつ宣言的な方法が混在しているようです。 Dojoはそのようなことに非常に敏感で、あなたのウィジェットがうまくいかない理由を理解しようと、時間を費やすことができます... あなたのコードに関して言及したいことがいくつかあります。宣言的にウィジェットを作成する場合は、必要なプロパティをインラインで渡すことができます。だからではなくthis.testReports.set("id", "reportsDropDown"); のは、次の方法でそれを行うことができます。

<input data-dojo-attach-point="testReports" 
     data-dojo-type="dijit/form/ComboBox" 
     data-dojo-props="store: store, searchAttr: name"> 
    </input> 

をかは、プログラムの作成を好む場合:

テンプレート

<input id="test-reports"></input> 

JSを

var testReports = new ComboBox({ 
     id: "testReports", 
     name: "reports", 
     value: "", 
     store: store, 
     searchAttr: "name" 
    }, "test-reports").startup();  

2番目のケースでは、要素にdata-dojo-attach-point属性を定義する必要はなく、参照する代わりに要素IDを使用します。this.someNode

関連する問題