我需要使用两个jQuery函数,其中一个ID在edge和chrome浏览器上运行。 Chrome工作完美但边缘却没有。
$("#myInput").keyup(function() {
$("#myInput").val($(this).val().replace(",", "."));
});
$("#myInput").change(function() {
alert("hello world");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="myInput" type="text" />
你能解释一下为什么以及如何解决它。
也许你的意思是:
更改输入逗号进入句号并在1秒钟不活动后触发问号
var tId;
$("#myInput").on("keypress", function(e) {
clearTimeout(tId);
if (String.fromCharCode(e.which) == ",") {
this.value += ".";
e.preventDefault();
}
tId = setTimeout(function() {
console.log("Hello")
}, 1000);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="myInput" />
似乎在Edge浏览器中,更改事件不会触发,您可以尝试在jquery focusout事件中触发更改函数,代码如下:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="myInput" type="text" />
<script type="text/javascript">
$(function () {
$("#myInput").keyup(function () {
$("#myInput").val($(this).val().replace(",", "."));
console.log("keyup event trigger");
});
$("#myInput").focusout(function () {
//check whether it is Edge browser
var ua = window.navigator.userAgent;
var edge = ua.indexOf('Edge/');
if (edge > 0) {
$("#myInput").trigger("change");
}
});
$("#myInput").change(function () {
//alert("hello world");
console.log("change event triger");
});
})
</script>
结果如下: