我意识到你永远不应该禁用一个元素,同时也需要它,因为如果它被禁用了,用户怎么能使它有效呢?
然而,我有一个产品的<select>
,我希望我的用户从中选择。当他们选择其中一个产品时,只有当产品有一个或多个模型时,才会填充、启用和需要该产品模型的另一个<select>
。否则,模型选择将被禁用并清空。
虽然我喜欢认为我的代码是完美的,我可以使它使模型下拉菜单永远不会被禁用,同时需要,但我并不完美。那么,表单是否能够与禁用和需要的<select>
一起提交?
摘自w3.org:
约束验证:如果元素是必需的,并且它的value IDL属性应用并且在mode值中,并且元素是可变的,并且元素的值是空字符串,那么元素就会丢失。
查找"可变"的具体含义
表单控件可以被指定为可变的。
注意:这决定了(通过本规范中的定义和要求,依赖于元素是否被指定)用户是否可以修改表单控件的值或检查性,或者控件是否可以自动预填充。
select没有值,所以它是由它的选项决定的。
所以,我认为这意味着如果禁用select元素没有值;它的选项元素的选择性是用来代替的。
<select>
元素并且需要,则可以认为该表单是有效的? 标题>
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:如果字段不是约束验证的候选者,则继续执行下一个元素。
这意味着,当检查表单有效性时,禁用的元素将被"忽略"。
它不会触发任何错误,也不会影响它所属表单的验证状态