使用Chrome中的jquery更改未在文本输入上触发的事件

时间:2011-12-06 22:25:13

标签: jquery google-chrome input onchange

我在文本输入上有一个jquery更改事件的问题,它在Firefox和IE中按预期工作,但在Chrome中没有。我还在文本输入上有一个键盘事件来操作输入的输入,但是当输入完成时我需要运行一些额外的代码。我尝试使用'模糊'事件和'焦点'事件,就像这里有人建议作为替代品一样,但后来我根本无法改变焦点 - 输入一直以某种方式抓住它。这是代码:

 $('.textInput').keyup(function(event) { /* do stuff */ });
 $('.textInput').change(function(event) { alert('Changed!'); /* do other stuff */ });

和html:

 <input type="text" class="textInput" value="" />

我正在使用jQuery 1.6.3。任何建议将不胜感激。 小时。

4 个答案:

答案 0 :(得分:11)

除非输入焦点切换到其他控件

,否则不会触发更改事件

答案 1 :(得分:0)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.textInput').keyup(function (event) {
                var obj = $(this);
                if ((event.keyCode ? event.keyCode : event.which) === 13) {
                    $('#result').text('Enter has been triggered.');
                }
            }); ;

            $('.textInput').change(function (event) {
                var obj = $(this);
                $('#result').text('Input text has been changed:' + obj.val());
            }); ;
        });
    </script>
</head>
<body>
    <span id="result"></span>
    <br />
    Enter some text and press enter:
    <input type="text" class="textInput" value="" />
</body>
</html>

答案 2 :(得分:0)

实际上,Google Chrome上存在一个错误,如果“keyup”事件更改了某些内容,则会导致“更改”事件无法触发:

https://code.google.com/p/chromium/issues/detail?id=92492

这个问题似乎从2013年5月2日开始。

答案 3 :(得分:0)

您可以使用像魅力一样的catch事件:

input

来源:https://gist.github.com/brandonaaskov/1596867