【问题标题】:Checkbox validation - at least one selected复选框验证 - 至少选择一个
【发布时间】:2011-03-13 22:53:38
【问题描述】:

我有多个复选框和另一个“全选”复选框

我想检查用户是否至少选择了一个复选框。需要在javascript中修改

<script language="Javascript">

function doSubmit(){
function check_checkboxes() 
{ 
checked=false;
var c = document.getElementsByTagName('INPUT'); 
for (var i = 1; i < c.length; i++) 
{ 
    if (c[i].type == 'checkbox') 
    { 
    if (c[i].checked) {
    return true} 
    else {alert("Please identify what warehouses comply:");  }
        } 
    } //if I place my struts action here..its not working?
}    
document.holiDay.command.value= 'addingApp'; //My Struts action if something checked. 
document.holiDay.submit(); 
}    

【问题讨论】:

标签: javascript checkbox validation


【解决方案1】:
var all=document.getElementById('holiDay');

在 HTML 中,ID 应该是唯一的,因此 getElementById 只会返回 1 个元素。也许你可以试试 getElementsByTagName - http://msdn.microsoft.com/en-us/library/ms536439(VS.85).aspx

类似...

function check_checkboxes()
{
  var c = document.getElementsByTagName('input');
  for (var i = 0; i < c.length; i++)
  {
    if (c[i].type == 'checkbox')
    {
       if (c[i].checked) {return true}
    }
  }
  return false;
}

并将您的验证功能更改为...

function Validate()
{
    if(!check_checkboxes())
    {
        alert("Please identify what warehouses comply:");  
        return false;
    }
    return true;
}

【讨论】:

  • 它不工作。当我单击提交按钮时,它甚至没有进入循环。 [代码]
  • 好的,我在原始答案中添加了更多内容(见上文)(或见 Jets 答案 - 但我认为这取决于 Jquery?)
  • 我知道这是一篇旧帖子,但我正在查看它并且我有一个快速的问题(我猜更多与 JavaScript 语法相关),当你写 'if (c[i].check ){return true}',这样会不会跳出 for 循环而不继续检查复选框数组的其余部分?
  • @de1337ed - 是的,它会的。原始问题的要求是检查是否至少选中了一个复选框 - 一旦我们找到一个已选中的复选框,我们就不需要继续循环,我们只需返回“true”。但是,如果我们通过循环而没有找到任何选中的复选框,那么我们返回 false。是吗?
【解决方案2】:
 (function() {
  for(x in $ = document.getElementsByTagName("input"))
   with($[x])
    return (type == "checkbox" ? checked == true : 0)
 })

【讨论】:

  • 请不要使用with,更糟糕的是,建议他人使用。
【解决方案3】:

使用 jqQery 至少选择一个复选框。试试下面的代码。

$('input[type="checkbox"][name="class"]').on('change', function () {
    var getArrVal = $('input[type="checkbox"][name="class"]:checked').map(function () {
        return this.value;
    }).toArray();

    if (getArrVal.length) {
        //execute the code
    } else {
        $(this).prop("checked", true);
        alert("Select at least one column");
        return false;
    }
    ;
});

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多