2014-11-05 83 views
-2

我有一個html表單,其中有很多複選框,頂部有一個Select All框,如何根據Select All框的選擇使Select All框自動選擇下面的所有複選框?如何在html中選擇所有複選框?

enter image description here

我不想顯示的代碼,因爲它是討厭的,我調試一箇舊的應用程序,但既然你問,那就是:

<script language="javascript"> 
    function selectAll2(value) { 
     var elem = document.forms[1].getElementsByTagName("select"); 
     var count = ${questionCount}; 
     for(var i = 1; i <= count; i++) { 
      if(i != 23 || (i==23 && ${w.carrier.stateOfDomicile ne 'FL'})) { 
       elem[i].value = value; 
       showNoShowQuestionaire(i,'Y','N',value); 
      } 
     } 
    } 
</script> 

<!-- Question # ${n} --> 
    <tr> 
     <td class="${labelClass}" align="right" valign="top" width=26%> 
      ${n}.&nbsp;&nbsp; 
     </td> 
     <td class="${labelClass}" align="left"> 
      ${q} 
     </td> 
     <c:choose> 
     <c:when test="${not_applicable eq 'Y'}"> 
      <td valign="top"> 
       <div id="QT_${n}"> 
       <html:select disabled="${disabled}" property="answers" styleClass="display: none;" value="${s}"> 
        <html:option value="Y">Yes</html:option> 
       </html:select> 
       </div> 
       <script language="javascript"> 
        document.getElementById("QT_${n}").style.display = 'none'; 
       </script> 

      </td> 
     </c:when> 
     <c:otherwise> 
      <td valign="top"> 
       <html:select disabled="${disabled}" property="answers" styleClass="processSelect" value="${s}" onchange="showNoShowQuestionaire('${n}','${yes_exp}','${no_exp}',this.value);"> 
        <html:option value="">--</html:option> 
        <html:option value="N">No</html:option> 
        <html:option value="Y">Yes</html:option> 
       </html:select> 
      </td> 
     </c:otherwise> 
     </c:choose> 
    </tr> 

從上面的代碼,我得到了一個Firefox和Chrome的錯誤消息,它說:elem [我]未定義。它在IE中正常工作。

由於我的應用需要在所有瀏覽器中工作,是否有適用於所有瀏覽器的解決方案?

+1

後所呈現的代碼,而不是什麼模板是。 – j08691 2014-11-05 22:02:51

+0

這些是下拉菜單,而不是複選框。你究竟是什麼意思*「選擇所有複選框」* ..?並且發佈生成的HTML而不是你的模板語言,並不是每個人都在運行一個服務器。否則,不要用'HTML'來標記這個標籤,使用你正在使用的服務器端和模板語言標記。 – 2014-11-06 10:25:49

回答

0

我找到了答案,我用下面的代碼來解決這個問題:

function selectAll2(value) { 
    var elements = document.forms[1].elements; 
    for (i=0;i<elements.length;i++) if (elements[i].tagName == 'SELECT') elements[i].value = value; 

    var count = ${questionCount}; 
    for(var i = 1; i <= count; i++) if(i != 23 || (i==23 && ${w.carrier.stateOfDomicile ne 'FL'})) showNoShowQuestionaire(i,'Y','N',value); 
} 
1

首先,它們不是複選框,它們是選擇元素。那麼你可以使用JavaScript(jQuery)。

$('.yesToAll').change(function(){ 
    if ($("select option:selected").text() == 'Y') { 
     //add attr selected to all other selects Yes options 
    } 
}); 
+1

不要爲此使用'click'事件,您應該使用'change'代替! – adrenalin 2014-11-05 22:01:03

+0

對不起,修好了。 – 2014-11-05 22:06:25