2016-11-07 62 views
1

我有一个通过ajax加载的表单。根据发送到获取表单的参数,表单可能没有复选框,或者它可能有一个或多个复选框。jQuery检查复选框是否在页面上

我想检查页面上是否存在复选框,如果是,提示用户在验证期间选择一个,如果没有选择。

如果存在,复选框具有相同的类别和不同的ID。

<input type="checkbox" name="associatedClass" 
value="$associatedClsNumVal" class="getAssociatedClass" 
id="$associatedClsNumVal" /> 

什么是最佳方法?如果在页面上/表单中有复选框,jquery可以“感觉”吗?

谢谢。


感谢您对我以前的帖子提供的帮助。因为它是同一类型的问题,所以我加入了这个。

我现在有一个页面,有一个或多个复选框组,我需要确保每个组中只有一个复选框被选中。

因为我不知道在加载页面之前有多少组,所以检查这个最好的方法是什么?

谢谢!

+1

好了,如果有复选框,然后'$( '输入[类型=复选框]')'将有一个积极的长度。 – David

+1

同上'$('input [name =“associatedClass”]')''和$(“。getAssociatedClass”)' – mplungjan

回答

3

最简单的方法是检查页面上的类型复选框是否有任何输入。使用jQuery,您可以使用CSS选择器(例如input[type="checkbox"])查找DOM中的元素。把它和.length结合起来,你就可以得到页面上有多少。这个完整的jQuery代码将

if ($('input[type="checkbox"]').length) { 
    // Validate checkboxes 
} 

如果有可能是因为你不想验证,那么你可以将搜索限制到特定的元素页面上的其他复选框。例如,如果您只想验证ID为myForm的特定表单中的复选框,则可以选择表单并使用.find()来搜索该表单内的复选框。

if ($('#myForm').find('input[type="checkbox"]').length) 
{ 
    // Validate checkboxes 
} 

但是与验证你可能要单独等等,而不是检查每个输入只是检查的长度,以确保没有在页面上至少一个复选框,我们可以使用.each找到所有的复选框,然后过程他们一次一个。

$('input[type="checkbox"]').each(function() { 
    // Validate this checkbox 
}); 

的是,优点是如果有没有它不会尝试和验证任何东西,这是完全合法的网页上,所以我们并不需要进行检查,看是否有任何我们的验证之前。

+0

我觉得这很容易。非常感谢。 – Gman

+0

@Gman很高兴我能帮上忙。请不要忘记注册并将其标记为正确,以帮助其他人在未来寻找相同问题的解决方案。 – Styphon

2
$(':checkbox').length 

会给你一个页面上所有复选框的计数。如果你需要更具体的话,你可以给他们一个普通的课程来缩小这个范围。

例如,仅计算与类 'SECTION1' 的复选框:

var $checks = $('.section1:checkbox'); 
console.log('There are ' + $checks.length + ' checkboxes'); 

https://jsbin.com/bowasi/edit?html,js,console,output