Wenn ich meine Anwendung ausführen, werden beide Kombinationsfelder angezeigt. Wie man einen zeigt und den anderen ausblendet, wenn man Radio Buttons anklickt?Wie verwende ich Dojo, um programmatisch generierte Kombinationsfelder anzuzeigen/auszublenden, indem Sie auf Optionsfelder klicken?
Ich speicherte den Zustand und die Region in einer statischen JSON-Datei und verwenden Sie xhrGet, um sie zu erhalten. Ich möchte Dojo-Kombinationsfeld für die automatische Vervollständigung verwenden.
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>
Danke Ben. Ich habe Ihre Codes ausprobiert, und die beiden Kombinationsfelder sind immer noch sichtbar. Die zwei divs sind auf versteckt eingestellt, aber zwei Kombinationsfelder werden angezeigt. Das kommt mir seltsam vor. irgendwelche Gedanken? –
Hier ist ein Geigenprojekt zum Testen. https://jsfiddle.net/wgsl2005/0nfprgm2/4/ –
@AlexW. Ich habe die Antwort bearbeitet. In Ihrem originalen Code erstellen Sie die Combo wie folgt: '' 'new ComboBox ({/*...*/}," region "). Startup();' ''. Mit dieser Syntax ersetzt dojo die '' 'div-Region''', anstatt die Combo darin einzufügen. Ich habe durch '' 'placeAt''' ersetzt. Außerdem sollten Sie die Klasse remove hinzufügen, anstatt die Inline-Stile zu entfernen: '' 'display: block''' ist nicht das Gegenteil von' '' display: none''' .... Wenn Sie wirklich wollen Um Inline-Stil zu verwenden, sollten Sie besser: '' 'domStyle.set (divElement," display "," ");' '' 'anstelle von' '' domStyle.set (divElement, "display", "block") ; '' ' – ben