jQuery更改事件未按预期工作

时间:2015-01-19 04:38:37

标签: javascript jquery

我在输入字段中添加了更改事件,以便每当用户将文本输入其中时,其他任务应该发生,它可以工作,但是当我在输入字段外单击时。我不知道它是默认行为还是我做错了什么。我尝试使用keyupkeydown事件,它可以正常运行。 请建议。

这是我的代码:

 $("#mobile-number").on('change',function(){
   // some other code               
 });

5 个答案:

答案 0 :(得分:3)

元素值更改时会触发change事件。

对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟到元素失去焦点

换句话说,在输入上,change事件在元素失去焦点时触发,而不是在您键入时触发,这是默认行为。

这就是为什么还有关键事件,在现代浏览器中,您可以通过input事件捕获对输入的大多数更改

$("#mobile-number").on('input',function(){ ...

答案 1 :(得分:1)

是的,这是理想的行为。

Change Event

  

更改事件是针对,,和   元素的值更改时的元素   用户。与输入事件不同,更改事件不一定   为元素值的每次更改触发。

     

取决于要更改的表单元素的种类和方式   用户与元素交互,更改事件以不同的方式触发   时刻:

     
      
  • 激活元素(通过单击或使用键盘)和;
  •   
  • 当用户明确提交更改时(例如,通过鼠标单击从下拉列表中选择一个值,通过选择一个   通过选择文件从日期选择器中选择日期   在文件选择器等等;);
  •   
  • 当元素在其值更改后失去焦点但未提交时(例如,在编辑或的值之后)。
  •   

答案 2 :(得分:1)

尝试使用input事件:



$(function() {
  $("#mobile-number").on('input', function() {
    $("#copy").val(this.value);
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type='text' id='mobile-number' />
<input type='text' id='copy' readonly/>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

试试这个:(如果我真的了解你的问题)

jQuery(document).on('change', '#mobile-number', function() {
   // some other code               
 });

表示类型事件:

jQuery(document).on('keyup', '#mobile-number', function() {
   // some other code               
 });

答案 4 :(得分:0)

您应该将选择器提供给.on函数:

$(document).on('change', '#mobile-number', function() {
    // some other code               
});