【问题标题】:Checkbox validation in JavascriptJavascript 中的复选框验证
【发布时间】:2011-06-03 18:34:05
【问题描述】:

大家好,我有 2 组复选框,它们是通过 java 动态生成的,具体取决于代码生成器工具生成以下 HTML

我有以下 JS 来验证是否从无效的每一行中选择了至少一个复选框为此改名了

由于某些限制,我无法使用 JQUERY

function validate()
{
      var e = document.form.elements;
    for ( var elem, i = 0; ( elem = e[i] ); i++ )
    {
         if (  elem.type == 'checkbox' )
        {
            if (!checkCheckBox (form, elem))
            {
                alert('Please check atleast one checkbox.');
                return false;
            } 
        } 
     } 
    document.form.submit();
    return true;
} 

 function checkCheckBox (form, elem)
{
     var check= form.elements[elem.name];
     var flag = false;
     for (var i=0; i <check.length; i++)
    {
        //alert(" radios[i].checked "+elem[i].checked);
        if (check[i].checked)
        {
             flag = true;
             break;
        }
    }
}





    <form name="form"> 
<table>
 <tr bgcolor='lightgray' width='100%' colspan='3'><td>KS3 QCheckbox 1</td></tr><tr><td>
<input type="checkbox" name="form[checkbox][KS31][KS31 1][]" id="COption 1" value="Option 1" /> 
<input type="checkbox" name="form[checkbox][KS31][KS32 1][]" id="COption 2" value="Option 2" /> 
<input type="checkbox" name="form[checkbox][KS31][KS33 1][]" id="COption 3" value="Option 3" /> 

<tr bgcolor='lightgray' width='100%' colspan='3'><td>KS3 QCheckbox 2</td></tr><tr><td>
<input type="checkbox" name="form[checkbox][KS32][KS31 2][]" id="COption 1" value="Option 1" /> 
<input type="checkbox" name="form[checkbox][KS32][KS32 2][]" id="COption 2" value="Option 2" /> 
<input type="checkbox" name="form[checkbox][KS32][KS33 2][]" id="COption 3" value="Option 3" /> 

<input type="submit" onClick="validate()">
</table>
</form>

【问题讨论】:

  • 为什么不能使用JQuery?有什么限制?只是好奇。
  • 你对使用jQuery有什么限制?
  • 我在 Blackbery 5 上使用这个脚本,而 Blackberry 5 不支持 JQUERY 我们使用的是 Rhodes 框架

标签: javascript html validation checkbox


【解决方案1】:

我认为你的 checkCheckBox 函数必须返回变量“flag”的内容:

function checkCheckBox (form, elem)
{
   var check= form.elements[elem.name];
   var flag = false;
   for (var i=0; i <check.length; i++)
   {
     //alert(" radios[i].checked "+elem[i].checked);
     if (check[i].checked)
        {
         flag = true;
         break;
        }
   }
   return flag;  // return true or false
}

【讨论】:

  • 这里的问题是复选框的分组我想验证由名称定义的第一组复选框
    form[checkbox][KS31] 以便至少选择一个复选框上述循环的问题在于它会遍历所有复选框,如果未选中任何一个复选框,它仍然会抛出您需要选择至少一个复选框的异常
【解决方案2】:
var chk = document.getElementsByName('checkbox_name[]');
   var len = chk.length;
   var has_program = false;
 for(i=0;i<len;i++) {
     if(chk[i].checked) {
        has_program = true;
        break;    
      } 
}
 if( !has_program )
    {
           alert("field with * is required");
         return false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2017-09-05
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2012-07-05
    相关资源
    最近更新 更多