HTML5表单验证中的必填和禁用元素

10

我意识到你不应该禁用一个同时需要的元素,因为如果它被禁用了,用户如何使其有效呢?

然而,我有一个产品的 <select> 列表供用户选择。当他们选择其中一个产品时,另一个用于该产品型号的< select> 将被填充,启用并且只有当该产品具有一个或多个型号时才必填。否则,型号选择框将被禁用并清空。

虽然我认为我的代码很完美,我可以让该型号下拉列表从未同时被禁用和必填,但我并不是完美的人。那么,如果一个被禁用并且必须填写的<select> 被提交,表单是否能够被提交?

更新

来自w3.org:

约束验证: 如果该元素是必填的,并且其值IDL属性适用于'value'模式,并且该元素是可变的,并且该元素的值为空字符串,则该元素存在缺失的情况。

查找关于“可变”的具体说明。

表单控件可以指定为可变的。

注意:这决定了(通过本规范中依赖于元素是否被指定而导致的定义和要求)用户是否可以修改表单控件的值或选中状态,或者一个控件是否可以自动填充。

选择框没有一个特定的值,它由其选项确定。

select 元素没有一个特定的值;其option元素的选择状态将被使用。

所以,我认为如果一个被禁用并且必须填写的<select> 被提交,表单可能会被视为有效?


请问您能详细说明一下“-1”是什么意思吗?我想知道在“最坏情况”下会发生什么。 - Katrina
尽量保持你的问题客观。 - Alex Tartan
1
@AlexTartan 这是客观的。表单要么被验证通过,要么没有。 - Katrina
1个回答

9

http://www.w3.org/TR/html5/forms.html#enabling-and-disabling-form-controls:-the-disabled-attribute:

约束验证:如果一个元素被禁用,它将被阻止约束验证。

http://www.w3.org/TR/html5/forms.html#barred-from-constraint-validation:

可提交元素是约束验证的候选项,除非有条件将其排除在约束验证之外

最后,从约束验证步骤列表中,http://www.w3.org/TR/html5/forms.html#constraint-validation

3.1:如果字段不是约束验证的候选项,则继续下一个元素。


这意味着当检查表单有效性时,已禁用的元素将被忽略

它不会触发任何错误,并且对其所属表单的验证状态没有任何影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接