【问题标题】:Clear readonly input date with jquery val() fails on Firefox, success on Chrome. Why?使用 jquery val() 清除只读输入日期在 Firefox 上失败,在 Chrome 上成功。为什么?
【发布时间】:2019-08-21 15:34:50
【问题描述】:

我在使用 JQuery.val('') 时遇到了 Firefox 和 Chrome 之间的不同行为

这是显示问题的 jsfiddle。 https://jsfiddle.net/mdqfbj/d4eovkg8/3/

一个单选按钮调用一个JS函数来清除一些字段,包括一些<input type="date" >

在 Chrome 中它可以正常工作,在 Firefox 中,只有当日期输入不是 readonly 时才会清除它们。

由于 readonly 控制用户输入,我希望 .val('') 无论 readonly 是否存在都能正常工作。

为什么不是这样?

【问题讨论】:

  • 这可能是 Firefox 的疏忽,或者这是规范所说的应该发生的事情,而 Chrome 正在做自己的事情。无论如何,这有点 hacky,但它有效:$('#shippingOffDate').prop('readonly', false).val('').prop('readonly', true);
  • 我想过删除只读/清除/添加只读,但并不令人满意。我也想知道为什么,因为我已经认为我可以用 vanilla js 避开这个问题。
  • 这不是 jQuery 问题,因为普通 JS 也会出现同样的行为:jsfiddle.net/eznyru5q。这是浏览器如何实现 HTML/JS 规范的问题
  • 谢谢你能把它作为答案吗?
  • 当然。添加了答案

标签: javascript jquery google-chrome firefox readonly-attribute


【解决方案1】:

从您的问题下的 cmets 开始,这是一个与浏览器如何实现 HTML/JS 规范有关的问题。因此,除了使字段可编辑、更改其值,然后再次使其成为只读之外,您无能为力:

$('#shippingOffDate').prop('readonly', false).val('').prop('readonly', true);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 2011-10-26
  • 2019-07-10
相关资源
最近更新 更多