使用HTML5的"required"属性来对一组复选框进行必填验证?
使用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”的要求。
这是一个简单的技巧。这是可以利用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 });