0
アプリケーションを実行すると、両方のコンボボックスが表示されます。ラジオボタンをクリックすると、他のものを表示して非表示にする方法は?ラジオ・ボタンをクリックしてプログラマティックに生成されたコンボ・ボックスを表示/非表示するためのDojoの使用方法?
ステートとリージョンを静的なjsonファイルに格納し、xhrGetを使用して取得しました。 自動完成のためにdojoコンボボックスを使いたいです。
var cboState;
var cboRegion;
dojo.xhrGet({
url: "../client/stemapp/widgets/samplewidgets/myProject/common.json",
handleAs: "json",
load: function (result) {
require([
"dojo/store/Memory",
"dijit/form/ComboBox",
"dojo/domReady!"
], function (Memory, ComboBox) {
var stateStore = new Memory({
data: result.states
});
var regionStore = new Memory({
data: result.regions
});
cboState = new ComboBox({
id: "state",
name: "state",
placeholder: "Select a State",
store: stateStore,
searchAttr: "name",
autocomplete: true
}, "state");
cboRegion = new ComboBox({
id: "region",
name: "region",
placeholder: "Select a Region",
store: regionStore,
searchAttr: "name",
autocomplete: true
}, "region");
});
}
});
domStyle.set(dom.byId('state'), "display", "block");
domStyle.set(dom.byId('region'), "display", "none");
On(query('.radio'),'change',function(){
\t \t \t \t query('.query').forEach(function(divElement){
\t \t \t \t \t domStyle.set(divElement, "display", "none");
\t \t \t \t });
\t \t \t \t domStyle.set(dom.byId(this.dataset.target), "display", "block");
});
<input class="radio" data-target="state" type="radio" name="selection" value="state" > State
<input class="radio" data-target="region" type="radio" name="selection" value="region" > Region
<div id="state" class="query"></div>
<div id="region" class="query"></div>
おかげでベンのシンプルかつ基本的な使用です。私はあなたのコードを試して、2つのコンボボックスがまだ表示されます。 2つのdivは非表示に設定されていますが、2つのコンボボックスが表示されます。それは私には奇妙に思える。何かご意見は? –
テストのためのフィドルプロジェクトです。 https://jsfiddle.net/wgsl2005/0nfprgm2/4/ –
@AlexW。私は答えを編集しました。元のコードでは、 '' '新しいコンボボックス({/*...*/}、" region ")。startup();' ''のようなコンボを作成します。この構文を使用すると、dojoはその中にコンボを入れるのではなく、 '' 'div region''を置き換えます。私は '' 'placeAt'''に置き換えました。また、良いインプリメンテーションとして、インラインスタイルを削除するのではなく、removeクラスを追加するべきです: '' 'display:block'''は' '' display:none'''の反対ではありません....本当に必要なら'' domStyle.set(divElement、 "display"、 "block")の代わりに '' domStyle.set(divElement、 "display"、 ""); '' ''を使用するのがよいでしょう。 ; '' ' – ben