使用必需和禁用元素

时间:2015-05-29 14:41:49

标签: html5 forms validation form-submit jquery-form-validator

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

但是,我有<select>个产品,我希望我的用户可以选择。当他们选择其中一个产品时,只有当产品具有一个或多个模型时,才会填充,启用和其他<select>产品。否则,模型选择被禁用并清空。

虽然我认为我的代码是完美的,但我可以做到这样,模型下拉列表永远不会被禁用并且同时需要,我并不完美。那么,是否可以使用已禁用且必需的<select>提交表单?

更新

取自w3.org:

  

约束验证:如果元素是必需的,并且其值IDL属性适用并且处于模式值且元素是可变的,则元素的值为空字符串,然后该元素正在丢失。

详细了解“可变”意味着什么。

  

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

     

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

选择没有值,因此由它的选项决定。

  

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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