2015-10-28 221 views
3

我的输入值检测在Chrome中正常工作,但在Internet Explorer中,如果用户键入Enter键,则“更改”事件不会被触发。我怎样才能使它适用于这两种浏览器,并且还可以防止事件在Chrome中被触发两次?未正确触发jQuery更改事件

js fiddel

HTML

<input type="text" class="price"> 
<h2></h2> 

jQuery的

var $input = $('.price'); 

    $input.on('change', function(e) { 

     $('h2').text($(this).val()); 
     //do other calculation 
    }).on('keyup', function(e) { 
     if(e.which != 13) return; 
     e.preventDefault(); 
     $(this).trigger('change'); 
    }) 
+0

使用'$ input.on(“KEYUP” ,'事件 –

+0

@NishitMaheta,有时用户想输入几位数字,它会失去对keup的专注 – vuvu

+0

检查这个小提琴可能会帮助你https://jsfiddle.net/vzbmLx9s/2/ –

回答

-1

这已经很长一段时间的问题,我不知道为什么jQuery的不会自动处理它。似乎没有要任何方法来解决两个事件烧制如果浏览器支持的onchange回车键,那么你就必须解决它:

$input.on('focus', function(e) { 
     this.calculationDone = false; 
    }).on('change', function(e) { 
     if (!this.calculationDone) { 
     calculationDone = true; 
     $('h2').text($(this).val()); 
     console.log('done'); 
     //do other calculation 
     } 
    }).on('keyup', function(e) { 
     if(e.which != 13) return; 
     e.preventDefault(); 
     $(this).trigger('change'); 
    }) 
+1

你的解决方案不工作,检查小提琴:https://jsfiddle.net/vzbmLx9s/5/ – vuvu