Как установить две функции jquery с одним идентификатором - PullRequest
0 голосов
/ 11 февраля 2019

Мне нужно использовать две функции jQuery с одним идентификатором, работающим в браузерах 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" />

Можете ли вы объяснить, почему и как это решить.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Похоже, что в браузере 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

0 голосов
/ 11 февраля 2019

Возможно, вы имеете в виду следующее:

Измените ввод запятой на ввод полной точки и вызовите привет через 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" />
...