javascript - jQuery 更改事件未正确触发

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

最佳答案

这个问题很久了,不知道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');
    })

关于javascript - jQuery 更改事件未正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385619/

相关文章:

javascript - 在 javascript、jquery 或 vue 中创建动态条件

javascript - 使用 javascript 提交表单并需要输入

jquery - 最大宽度和横幅尺寸

javascript - 如何删除弹出窗口中出现的 onclick 按钮 - CSS 和 JS 相关

javascript - 在现有 package.json 中安装新的依赖项

javascript - 在 javascript 中使用按位删除小数的语法帮助

javascript - 脚本不运行 React

jquery - 斑马线剥离在 IE8 中不起作用

javascript - 如何使用 javascript 和 ajax 检查表单是否已提交以避免多次发送同一表单

javascript - 如何点击 Chrome 扩展程序中的按钮