2011-12-06 38 views
10

我对文本输入上的jQuery更改事件有问题,在Firefox和IE中按预期工作,但在Chrome中无法正常工作。我还在文本输入上有一个关键事件来处理输入,但输入完成后,我需要运行一些额外的代码。我尝试使用'blur'事件和'focusout'事件,因为这里有人提出了替代方案,但后来我根本无法改变焦点 - 输入不停地抓住它。下面是代码:在Chrome中使用jquery的文本输入没有触发更改事件

$('.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。任何建议将不胜感激。 H.

+0

[对我的作品(http://jsfiddle.net/davidThomas/R8VBY/)在Chromium 14/Ubuntu的11.04。 –

+0

你可以发布Chrome给你的错误吗?如果您执行检查元素(在页面上单击右键),它应该会显示错误是什么。 – Andres

+0

你在页面上加载了哪些其他的js代码,这些代码会让它抓回焦点?只有在焦点发生变化时才会发生火灾,这可能是原因。 – loganfsmyth

回答

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> 
+0

使用时应该调用$(document).ready(function(){});. – Thulasiram

+0

现场演示请参阅此链接:http://jsfiddle.net/nanoquantumtech/HB33h/ – Thulasiram

11

改变事件将不会开火,除非输入焦点切换到其他控件