2015-10-28 187 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