2012-04-15 112 views
6

我想知道是否有可能基于某些其他元素状态设置元素“required”。例如,假设我有一个输入元素,当且仅当用户检查特定的复选框时,我才想要“输入”元素。首先,这可以做到这一点,而不使用JavaScript?其次,如果我们使用JavaScript,那么当用户检查该复选框时,当然可以设置规则/验证,但是关于默认浏览器验证错误的一致性如何?一旦复选框被点击,将“required”属性添加到元素是否“正确”?我在这里没有看到替代方案。你对这个有什么想法?HTML5表单验证的条件规则

回答

3

我不认为你可以做到这一点没有JavaScript。

使用JavaScript,您可以轻松完成此操作。

只有在复选框被点击后,我才会添加required属性。

实际上,我会将此作为toggled件,以便用户可以取消选中并取消输入。

但是,我不会依赖浏览器的required属性的执行。相反,我会使用一些CSS创建我自己需要的通知(突出显示,动画,显示一些单词)。

+0

“不过,我不会依赖于浏览器的实现所需要的属性” - 我同意!我在想,如果我会使用JavaScript,我可以解决我的问题,但是,如果JavaScript被禁用(只是假设..),那么我会让浏览器对某些字段进行默认表单验证,但对其他字段不会。除非(我应该在前面提到这个)我在HTML中使用了“novalidation”,这会被JavaScript删除,这意味着如果没有JavaScript,那么只会有服务器端验证。 – Jonas 2012-04-15 21:37:58

0

您可以使用polyfills模仿时无法使用本机验证:
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

+0

可能有一些脚本,但如果JS被禁用,你将有一些字段的验证,而不是其他人。 – Jonas 2012-04-16 16:04:30

+0

无论如何,你必须做服务器端验证。而且你必须接受JS可以被禁用的事实,并且在这种情况下,polyfill将不起作用。但它只能改善用户体验,所以为什么不做呢? – 2012-04-17 08:04:16