9

我意识到你永远不应该禁用一个元素并且还需要它,因为如果它被禁用,用户如何使它有效?

但是,我有一些<select>产品希望我的用户从中选择。当他们选择其中一种产品时,另一种<select>产品的模型被填充、启用,并且仅当产品具有一个或多个模型时才需要。否则,模型选择将被禁用并清空。

虽然我喜欢认为我的代码是完美的,并且我可以做到这一点,以便模型下拉菜单永远不会被禁用和同时被要求,但我并不完美。那么,表单是否能够以<select>禁用和必需的形式提交?

更新

取自 w3.org:

约束验证:如果元素是必需的,并且它的 value IDL 属性适用并且处于模式值中,并且元素是 mutable,并且元素的值是空字符串,则该元素正在遭受缺失。

查找具体的“可变”意味着什么。

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

注意:这决定(通过本规范中依赖于元素是否如此指定的定义和要求)用户是否可以修改表单控件的值或检查性,或者是否可以自动预填充控件.

Selects 没有值,所以它是由它的选项决定的。

选择元素没有值;它的选项元素的选择是用来代替的。

所以,我认为这意味着如果一个<select>元素被禁用并且需要,那么表单可以被认为是有效的?

4

1 回答 1

8

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:如果字段不是约束验证的候选者,则继续下一个元素。


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

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

于 2015-05-29T15:16:18.680 回答