尝试使用dojo解决一个小问题,如果myCode的值等于selCode(从下拉列表中选择的值)
该按钮需要被禁用。我在哪里错了?
Example
var myCode = "CC";
dojo.addOnLoad(function() {
dojo.connect(dojo.byId('#codes'), "onchange", function(evt) {
var selCode = this.val();
if (selCode == myCode) {
dojo.attr('#submit', disabled);
}
dojo.stopEvent(evt);
});
});
<select name="codes" id="codes" class="codes">
<option selected="selected" value="">Select Below</option>
<option value="AA">AA</option>
<option value="BB">BB</option>
<option value="CC">CC</option>
<option value="DD">DD</option>
</select>
答案 0 :(得分:3)
两个问题: 1. Dojo不使用那样的CSS选择器。不要使用#。 2. attr函数有三个参数(当你做你想做的事情时):id / dojoObj,attr name,attr value。
var myCode="CC";
dojo.addOnLoad( function() {
dojo.connect(dojo.byId('codes'), "onchange", function(evt) {
if(this.value == myCode){
dojo.attr('submit', 'disabled', 'disabled');
}
dojo.stopEvent(evt);
});
});
答案 1 :(得分:1)
好吧,我对Dojo一无所知,但确实看起来你正在尝试使用jQuery方法.val()
和.attr()
,除非Dojo使用相同的方法。 (我找不到他们的文档。)
放弃本机API的库代码可以这样工作:
var myCode="CC";
dojo.addOnLoad( function() {
dojo.connect(dojo.byId('#codes'), "onchange", function(evt) {
var selCode = evt.target.options[evt.target.selectedIndex].value;
if(selCode == myCode){
document.getElementById('submit').disabled = true;
}
dojo.stopEvent(evt);
});
});
示例: http://jsfiddle.net/BmSjb/21/
编辑:根据以下评论,您希望根据匹配选择进行切换。
var myCode = "CC";
dojo.addOnLoad(function() {
dojo.connect(dojo.byId('#codes'), "onchange", function(evt) {
var selCode = evt.target.options[evt.target.selectedIndex].value;
document.getElementById('submit').disabled = (selCode == myCode);
dojo.stopEvent(evt);
});
});
示例: http://jsfiddle.net/BmSjb/32/
现在.disabled
属性将设置为selCode == myCode
的结果,因此当true
时,它将被禁用。 false
时启用。