如何使用一个标识设置两个jquery函数

问题描述 投票:-4回答:2

我需要使用两个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" />

你能解释一下为什么以及如何解决它。

javascript jquery html google-chrome microsoft-edge
2个回答
0
投票

也许你的意思是:

更改输入逗号进入句号并在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" />

0
投票

似乎在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>

结果如下:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.