使用jQuery在Chrome中输入文本时,更改事件未触发

11

我在一个文本输入框上使用了jQuery的change事件,在Firefox和IE中表现如预期,但在Chrome中却有问题。同时我还通过keyup事件操作输入的内容,但当输入完成后,需要运行一些额外的代码。我尝试使用'blur'事件和'focusout'事件作为替代品,但是无法改变焦点--该输入框会再次获得焦点。以下是代码:

 $('.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。非常感谢您的任何建议。


在 Chromium 14/Ubuntu 11.04 中,Works for me - David Thomas
你能否发布一下Chrome给你的错误信息?如果你使用检查元素(右键点击页面),它应该会显示出错误信息。 - Andres
你在页面上加载了哪些其他的js代码,会让它重新获得焦点?更改只有在焦点改变时才会触发,这可能就是原因。 - loganfsmyth
没有出错,只是变化事件没有触发。由于它在其他人那里有效,我改变了策略,并将其缩小到 keyup 处理程序中的某些内容会阻止 Chrome 上的更改事件。那不是我的代码,所以我通过在 keyup 处理程序中运行来自 change 处理程序的代码来解决它 - 不是最有效的,但没有造成重大损害。当我有时间时,我会尝试找到 keyup 处理程序中的问题代码。谢谢你查看它。 - user1084458
4个回答

12

只有当输入焦点切换到其他控件时,更改事件才会触发。


1

0

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接