我正在使用 readonly
, disabled
和 required
输入文本字段的属性:
<input type="text" id="visitDate" name="visitdate" readonly="readonly" disabled="disabled" required="required" />
我的问题是三个属性中的两个,即disabled
和readonly
正常工作,但required
无法正常工作。提交按钮允许提交即使是空的。但是,如果我删除了readonly
表格,则不能空。
我使用
读取,因为我使用的是date chicker和用户不允许输入日期手册。
禁用,因为我希望此输入字段在开始时禁用
需要,因为使用必须从日期选择器开始选择日期不会空的。
实际发生的是默认情况下(html实现验证),如果仅读取或禁用字段,则HTML中的验证将不会触发。
其原因很简单。如果该字段为空的属性禁用或仅读取,并且应用所需的验证,则该表单在任何时候都无法有效。
似乎没有直接和道德的解决方案,但是间接解决方案可能是:
i)handeling键/向下事件,以免输入添加。
jQuery代码:
$('input').keypress(function(e) {
e.preventDefault();
});
ii)对于禁用控制,我建议不要将datepicker添加到元素,直到您想要。稍后,您可以在需要时使用JS添加它(在您的情况下,在"选择列表更改"事件上注册DatePicker)。
另外,如果您使用的是jQuery ui datepickers,则可以使用启用和禁用jQuery事件:
$("#txtSearch").datepicker("enable");
$("#txtSearch").datepicker("disable");
要进一步阅读,您可以查看此链接。这是对引导程序验证的讨论,但也适用于纯HTML。
希望,这会有所帮助。
如果元素是 disabled
,则在表单验证中忽略它。
来自HTML的WhatWG规范:
如果禁用了元素,则禁止其约束验证。(来源)
您几乎肯定在这里实际上不想要disabled
:您想要readonly
的行为。从记录该属性的部分中:
disabled
和readonly
之间的区别在于,仅读取控件仍然可以正常运行,而在启用启用后,残疾人控件通常不作为控件。(来源)
"仍在运行"包括验证,以及提交表单时发送的数据的一部分之类的内容。