jQuery更改事件未正确触发

时间:2015-10-28 07:53:52

标签: javascript jquery html

我的输入值检测在Chrome中运行正常,但在Internet Explorer中,如果用户键入回车键,则不会触发“更改”事件。如何使其适用于两种浏览器,此外还可以防止在Chrome中触发事件两次?

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');
    })

1 个答案:

答案 0 :(得分:-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');
    })