使用支持HTML5的新浏览器时(例如FireFox 4);
表单字段的属性为 required='required'
;
表格字段为空/空白;
然后点击提交按钮;
浏览器检测到"required"字段为空并且不提交表单;
而是浏览器显示一个提示,要求用户在该字段中键入文本 .
现在,我有一组复选框,而不是单个文本字段,其中至少有一个复选框应由用户检查/选择 .
如何在此组复选框上使用HTML5 required
属性? (由于只需要检查其中一个复选框,我不能在每个复选框上放置 required
属性)
PS . 我正在使用simple_form,如果这很重要的话 .
UPDATE
HTML 5 multiple attribute在这里有用吗?有没有人用它来做类似我问题的事情?
更新
It appears that this feature is not supported by the HTML5 spec: ISSUE-111: What does input.@required mean for @type = checkbox?
(问题状态:问题已标记为无偏见 . )和here is the explanation .
更新2
这是一个老问题,但是想澄清一下,问题的初衷是能够在不使用Javascript的情况下完成上述操作 - 即使用HTML5方式 . 回想起来,我应该让“没有Javascript”更加明显 .
9 回答
我有同样的问题,我的解决方案是这样的:
HTML:
JS:
https://jsfiddle.net/oywLo5z4/
不幸的是,HTML5并没有提供开箱即用的方法 .
但是,使用jQuery,您可以轻松控制复选框组是否至少包含一个checked元素 .
考虑以下DOM片段:
您可以使用此表达式:
如果至少检查了一个元素,则返回
true
. 基于此,您可以实施验证检查 .这是一个简单的技巧 . 这是jQuery代码,如果选中任何一个属性,可以通过更改
required
属性来利用html5验证 . 以下是您的html代码(确保您为组中的所有元素添加所需的内容 . )以下是jQuery脚本,如果选择了任何一个脚本,它将禁用进一步的验证检查 . 使用name元素选择 .
小问题:由于您使用的是html5验证,请确保在验证之前,即在表单提交之前执行此操作 .
我想's no standard HTML5 way to do this, but if you don' tt介意使用jQuery库,我已经能够使用webshims'“group-required”验证功能实现"checkbox group"验证:
docs for group-required说:
这是一个如何使用它的例子:
我主要使用webshims来填充HTML5功能,但它也有一些像这样的可选扩展 .
它甚至允许您编写自己的自定义有效性规则 . 例如,我需要创建一个名为't based on the input'的复选框组,所以我写了my own validity rule for that ...
HTML5不直接支持只需要在复选框组中选中一个/至少一个复选框 . 这是我使用Javascript的解决方案:
HTML
JAVASCRIPT
javascript将确保至少选中一个复选框,然后取消整个复选框组 . 如果选中的一个复选框变为未选中状态,则它将再次需要所有复选框!
受到@thegauraw和@Brian Woodward的答案的启发,我有点为JQuery用户提供了一些帮助,包括自定义验证错误消息:
请注意,我的表单默认选中了一些复选框 .
也许你们中的一些JavaScript / JQuery向导可以进一步收紧它们?
我们也可以使用html5轻松完成,只需要添加一些jquery代码
Demo
HTML
Jquery
嗨,只需使用复选框组附加的文本框 . 当单击任何复选框时,将值放入该文本框 . 使该文本框成为必需和只读 .
这是使用Jquery的另一个简单技巧!!
HTML
JQuery
这就是全部..这是有效的,因为如果没有选中任何复选框,则关于复选框组(包括其名称)的任何内容都不会发布到服务器