2015-10-28 6 views
3

Мое обнаружение ввода значений отлично работает в Chrome, но в Internet Explorer событие «change» не запускается, если пользователь вводит ключ ввода. Как я могу заставить его работать для обоих браузеров и, кроме того, предотвратить, чтобы событие дважды запускалось в 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» , 'event –

+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

Смежные вопросы