我正在使用输入文本字段的 readonlydisabledrequired 属性,如下所示:

<input type="text" id="visitDate" name="visitdate" readonly="readonly" disabled="disabled" required="required" />
我的问题是三个属性中的两个,即 disabledreadonly 工作正常,但 required 不起作用。提交按钮允许提交,即使它是空的。但是如果我删除 readonly 表单不能提交为空。
我用

最佳答案

实际发生的是,默认情况下(验证的 HTML 实现),如果字段为只读或禁用,则不会触发 HTML 中的验证。

原因很简单。如果该字段为空且属性禁用或只读,并且应用了必需的验证,则该表单在任何时候都无效。

似乎没有直接和道德的解决方案,但间接的解决方案可能是:

i) 处理按键向上/按键向下事件,以便无法添加输入。

jQuery代码:

$('input').keypress(function(e) {
    e.preventDefault();
});

ii) 对于禁用控制,我建议不要在需要之前将日期选择器添加到元素中。稍后,您可以在需要时使用 JS 添加它(在您的情况下,在选择列表更改事件上注册日期选择器)。

此外,如果您使用 jQuery UI 日期选择器,则可以使用启用和禁用 jQuery 事件,如下所示:
$("#txtSearch").datepicker("enable");
$("#txtSearch").datepicker("disable");

如需进一步阅读,您可以查看 this 链接。这是关于 Bootstrap 验证的讨论,但它也适用于纯 HTML。

希望,这会有所帮助。

关于javascript - 为什么同一输入字段文本中的 `readonly` 、 `disabled` 和 `required` 无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42372911/

10-15 13:17