【发布时间】:2018-08-06 09:05:13
【问题描述】:
我发现一个有趣的跨浏览器问题,使用 jQuery 的 .val 清除 HTML 时间输入。我想动态禁用输入并清除表单中的值。似乎 Firefox 需要以特定顺序发生才能达到预期的结果,Chrome 和 Safari 似乎并不关心这个顺序。我也有同样的code in a jsfiddle。
我很好奇是否有人知道导致此问题的幕后情况。这是 jQuery 中的错误吗?
$('#reset-jq').click(function() {
$('#time-jq').val('').prop('disabled', true);
});
$('#reset-jqn').click(function() {
$('#time-jqn').prop('disabled', true).val('');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p><strong><code>.val</code> before disable:</strong> works on desktops: Chrome, Safari and Firefox</p>
<input id="time-jq" type="time" value="11:11">
<button id="reset-jq">Clear</button>
<br><br>
<p><strong>disable before <code>.val</code>: </strong> works on desktops: Chrome, Safari, but not Firefox</p>
<input id="time-jqn" type="time" value="11:11">
<button id="reset-jqn">Clear</button>
【问题讨论】:
-
首先,在操作 DOM 时将 jQuery 与 vanilla JS 混合可能会导致一些差异......如果将 document.getElementById('reset-jqn') 换成 $('reset -jqn').on('点击') ?
-
@otherstark,我已经更新了 jsfiddle 和代码 sn-p。没有变化。
-
这是
.val的函数实现吧? github.com/jquery/jquery/blob/… -
有趣。似乎仅限于
time输入。text输入使用.prop('disabled', true).val('')方法。
标签: jquery html firefox cross-browser