为什么在同一输入字段文本中``readonly'',“ disabled”和“必需”无法正常工作



我正在使用 readonlydisabledrequired输入文本字段的属性:

<input type="text" id="visitDate" name="visitdate" readonly="readonly" disabled="disabled" required="required" />

我的问题是三个属性中的两个,即disabledreadonly正常工作,但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的行为。从记录该属性的部分中:

disabledreadonly之间的区别在于,仅读取控件仍然可以正常运行,而在启用启用后,残疾人控件通常不作为控件。(来源)

"仍在运行"包括验证,以及提交表单时发送的数据的一部分之类的内容。

最新更新