【问题标题】:jQuery check if Checkboxes are on pagejQuery检查复选框是否在页面上
【发布时间】:2017-03-20 21:20:18
【问题描述】:

我有一个通过 ajax 加载的表单。根据发送来获取表单的参数,表单可能没有复选框,也可能有一个或多个复选框。

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

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

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

最好的方法是什么?如果页面/表单中有复选框,jquery可以“感知”吗?

谢谢。


感谢您对我之前帖子的帮助。我正在添加这个问题,因为它是同一类型的问题。

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

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

谢谢!

【问题讨论】:

  • 好吧,如果有复选框,那么$('input[type=checkbox]') 将有一个正长度。
  • 同上 $('input[name="associatedClass"]')$(".getAssociatedClass")

标签: javascript jquery ajax checkbox


【解决方案1】:

最简单的方法是检查页面上是否有任何类型复选框的输入。使用 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
});

这样做的好处是,如果页面上没有任何内容,它将不会尝试验证任何内容并且它是完全有效的,因此我们无需在验证之前检查是否有任何内容。

【讨论】:

  • 这比我想象的要容易。非常感谢。
  • @Gman 很高兴我能提供帮助。请不要忘记投票并将答案标记为正确,以帮助其他人在未来寻找相同问题的解决方案。
【解决方案2】:
$(':checkbox').length

将为您提供页面上所有复选框的计数。如果您需要更具体,可以通过给他们一个通用类来缩小范围。

例如,只计算具有“section1”类的复选框:

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

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

【讨论】:

    【解决方案3】:
    if ( $( "#myElement" ).length ) {
    
       // Your code here
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      相关资源
      最近更新 更多