使用HTML5的"required"属性来对一组复选框进行必填验证?

24 浏览
0 Comments

使用HTML5的"required"属性来对一组复选框进行必填验证?

当使用支持HTML5的较新浏览器(例如FireFox 4)时;
并且一个表单字段拥有属性required='required'
并且这个表单字段是空的/空白的;
并且提交按钮被点击时;
浏览器检测到“required”字段为空并且不提交表单;
相反,浏览器会显示提示,要求用户在字段中输入文本。

现在,我不是只有一个文本字段,我有一组复选框,其中至少应该由用户选中其中一个。

我如何在这组复选框上使用HTML5的required属性?(由于只需要选中其中一个复选框,我不能在每个复选框上都放置required属性)

附注:我正在使用simple_form,如果有影响的话。


更新

HTML 5的multiple属性可能在这里有用吗?有人使用它来完成类似于我的问题吗?

更新

看起来这个特性不受HTML5规范支持:ISSUE-111 :对于@type = checkbox的input。@required是什么意思?

(问题状态:问题已被标记为未经偏见的关闭。)
以及这是解释

更新2

这是一个旧的问题,但是想要澄清,这个问题最初的意图是能够在不使用Javascript的情况下进行上述操作 - 即使用HTML5的方式进行操作。回想起来,我应该更加明确地提出“不使用Javascript”的要求。

0
0 Comments

这是一个简单的技巧。这是可以利用HTML5验证功能的jQuery代码,通过更改required属性来实现。下面是您的HTML代码(请确保为组中的所有元素添加required)。

 Option 1
 Option 2
 Option 3
 Option 4
 Option 5

以下是jQuery脚本,如果选中任何一个,则禁用进一步的验证检查。使用名称元素进行选择。

$cbx_group = $("input:checkbox[name='option[]']");
$cbx_group = $("input:checkbox[id^='option-']"); // name is not always helpful ;)
$cbx_group.prop('required', true);
if($cbx_group.is(":checked")){
  $cbx_group.prop('required', false);
}

小问题:由于您正在使用HTML5验证,因此请确保在验证之前执行此操作,即在表单提交之前。

// but this might not work as expected
$('form').submit(function(){
  // code goes here
});
// So, better USE THIS INSTEAD:
$('button[type="submit"]').on('click', function() {
  // skipping validation part mentioned above
});

0
0 Comments

不幸的是,HTML5没有一个现成的方法来做到这一点。

然而,使用jQuery,你可以轻松地控制是否有至少一个复选框元素被选中。

考虑以下DOM片段:

    
    
    
    

你可以使用这个表达式:

$('div.checkbox-group.required :checkbox:checked').length > 0

如果至少有一个元素被选中,它将返回true

基于此,您可以实现您的验证检查。

0