2017-05-14 55 views
1

我已经应用验证到我的表单通过jquery和在这种形式我有四个复选框,用户必须选中一个提交表单。什么用于替换返回布尔

这是代码:

for (var i = 0; i < c.length; i++) { 
    if (c[i].type == 'checkbox' && c[i].checked == true) {  
     return true; 
    } else { 
     error += alert ("You must select atleast one previous benefit provided"); 
     return false 
    } 
} 

的问题是,这个使用返回键,如果我删除回车键它会提醒4倍(相同数量的复选框),如果我让他在那里那么如果该检查领域,并给予错误的语句不工作

if(error != "") { 
    $("#error").html("<strong>Some fields are invalid!</strong>") || error; 
    return false; 
} else { 
    return true; 
} 

如果我删除复选框验证回报则万物做工精细,但它给予警告四次,如果不删除它,然后不给错误时提交表单。

+0

请提供您面临的问题的[最小,完整和可验证示例](https://stackoverflow.com/help/mcve)。 –

+0

@ArturFilipiak我还应该提供什么?这是我面临问题的地方。我应该把整个验证码和html复选框? –

+0

我们无法根据您发布的代码验证您的问题。什么是'c'?什么是错误? HTML的外观如何?只有'checkboxes'在你的'form'中有效或者有其他验证元素吗?你可以让工作[JSFiddle Demo](http://jsfiddle.net/)? –

回答

2

alert()不会返回任何东西,所以你的error逻辑没有意义。

创建一个选中的复选框的集合,并确保它具有长度。

var hasChecked = $('#myForm :checkbox:checked').length; 
if(!hasChecked){ 
    return false 
    error = true; 
} 
+0

你是什么意思的长度?我怎样才能做到这一点? –

+0

使用jQuery对象的长度会告诉你是否有选择符匹配 – charlietfl

+0

这里还有一个返回键,它在中断返回键的时候会出错。 –