Problems with checkbox required php-js

23 浏览
0 Comments

Problems with checkbox required php-js

当使用支持HTML5的较新的浏览器(例如FireFox 4)时;
并且表单字段具有属性required ='required'
并且表单字段为空/空白;
并且单击提交按钮;
浏览器检测到“必填”字段为空,因此不会提交表单;
而是浏览器显示提示,要求用户在字段中键入文本。

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

我如何在这组复选框上使用HTML5的required属性?
(因为只需要勾选其中一个复选框,所以无法在每个复选框上使用required属性)

附:我正在使用simple_form,如果有所影响,请告知。


更新

HTML 5 multiple属性是否有助于解决此问题?有人曾经使用它来做类似于我的问题吗?

更新

看起来这个功能在HTML5规范中不受支持:ISSUE-111: What does input.@required mean for @type = checkbox?

(问题状态:问题已被标记为无偏见关闭。)
这是说明。

更新2

虽然这已经是一个老问题了,但是我想澄清这个问题最初的意图是想要不使用Javascript的情况下进行上述操作,也就是使用HTML5的一种方式来实现。回想起来,我应该让“不使用Javascript”更加明显。

0
0 Comments

这是一个简单的技巧。这是一个能够通过更改 required 属性利用 html5 验证的 jQuery 代码,只要有一个被选中即可。以下是您的 html 代码(确保您为组中的所有元素添加了 required)。

 Option 1
 Option 2
 Option 3
 Option 4
 Option 5

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

$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 验证,请确保在它被验证 i.e. 表单提交之前执行此操作。

// 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