禁用特定下拉值的按钮

时间:2011-07-20 17:48:28

标签: javascript html css dojo

尝试使用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>

2 个答案:

答案 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时启用。