Javascript启用/禁用复选框,我在这里做错了什么?

时间:2011-10-24 16:34:37

标签: javascript coldfusion getelementbyid

我的输入复选框有一个循环(见下文)。

<cfloop query="qGetCBList">
<input name="#qGetCBList.CheckBox#" type="checkbox" id="#qGetCBList.CheckBox#"onclick="CheckBoxSelect('#qGetCBList.CBNum#','#qGetCBList.CheckBox#','#qGetCBList.RecordCount#');">&nbsp;&nbsp;#qGetCBList.CBDesc# 
    <br /><br />
</cfloop>

我的javascript函数是,

<script language="JavaScript">
CheckBoxSelect = function(CB,cbID,rCnt){
  var myVar_CB=CB;
  var myVar_CB_ID=cbID;
  var myVar_RCNT=rCnt;
    if(myVar_CB == 2) //"Chemical(s)........."
    {   
      for(i=1;i<=myVar_RCNT;i++){
        var myVar_CB_ID_FMT="cb"+i; //check box ID format
        if(i!=2){
          //alert(myVar_CB_ID_FMT);     
          document.getElementById("myVar_CB_ID_FMT").disabled=true;
        }
      }
    }
    else{
      alert('good to go');  
    }
  }
</script>

这里发生的是,如果选中的复选框是2(即CBNum),那么我希望禁用所有其他复选框。

P.S。这是主页的绑定页面。当我取消评论我的警报标签时,它会给我正确的CBNums,但是禁用不起作用。如果它有用,我正在使用CF8。

赞赏反馈和/或替代方法。谢谢。

3 个答案:

答案 0 :(得分:3)

我对ColdFusion一无所知,但您可以使用的基本JavaScript提示是:

  • 检查document.getElementById()的返回值;不要以为它总会返回一个你可以禁用的节点。

  • 大多数浏览器都有built-indownloadable调试器,可以让您检查变量。使用它而不是普通警报。 E.g:

    console.log(myVar_CB_ID_FMTT, document.getElementById(myVar_CB_ID_FMT));
    

答案 1 :(得分:1)

getElementById("myVar_CB_ID_FMT")正在寻找名为myVar_CB_ID_FMT的元素。这个元素存在吗?不会。您的变量myVar_CB_ID_FMT将不会被评估为getElementById,只是将其视为字符串“myVar_CB_ID_FMT”。

尝试document.getElementById("cb"+i)

getElementById(id)中的ID区分大小写,因此请确保“cb”+ i存在。

答案 2 :(得分:0)

@Barry Jordan回答有点叫醒了我,我在错误检查@ÁlvaroG。Vicario提到,然后我终于弄清楚发生了什么。

在我的循环中,当我修剪我的id值...id="#trim(qGetCBList.CheckBox)#"...时,它有效。 当然,这是一个简单的愚蠢和我的错。

谢谢大家的支持,你们都摇滚。