javascript - 当我通过另一个 jQuery 手动更改输入值时,如何捕获 jQuery 更改事件?

标签 javascript jquery

嗯,我在处理输入字段的更改事件时遇到问题。因为我正在通过另一个脚本更改输入字段的文本。因此我无法 catch 该事件。

enter image description here

看,这里有 2 个按钮 -+,当我单击 -/+ 时,某个值将插入文本框内。这是一个数值,我通过包含和减少 1 手动添加了增量和减量。无论如何,由于文本框中的文本正在更改,我无法在 jQuery 中捕获该事件 我的代码如下

<script  src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<button>-</button><input type="text" id="abc" /><button>+</button>

我的 jQuery 函数都没有捕获该事件。

$("#abc").change(function(){
    alert();
});
$("#abc").click(function(){
    alert();
});

因为我已经通过另一个 jQuery 帮助器添加了文本。那么我怎样才能捕获文本更改事件呢?我不想写下增量和减量函数内的代码。我想保持该代码完整。那么有什么办法可以轻松解决这个问题吗?提前致谢。

更新: 这是增量和减量的更新代码

var btn = $(this),
            oldValue = $('#abc').val().trim(),
            newVal = 0;

        if (btn.attr('data-dir') == 'up') {
            newVal = parseInt(oldValue) + 1;
        } else {
            newVal = parseInt(oldValue) - 1;
        }
$('#abc').val(newVal);

最佳答案

您需要.trigger(event)事件,当用户与元素交互时触发事件。

$("#abc").change(function() {
  console.log('changed', this.value);
});

$("button").click(function() {
  var btn = $(this),
    oldValue = $('#abc').val().trim(),
    newVal = 0;

  if (oldValue != '') {
    if (btn.attr('data-dir') == 'up') {
      newVal = parseInt(oldValue, 10) + 1;
    } else {
      newVal = parseInt(oldValue, 10) - 1;
    }
  }
  
  $('#abc').val(newVal).trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<button data-dir="down">-</button><input type="text" id="abc" /><button data-dir="up">+</button>

关于javascript - 当我通过另一个 jQuery 手动更改输入值时,如何捕获 jQuery 更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43625878/

相关文章:

javascript - 尽快将变量从 chrome 扩展程序传递到网页

javascript - ES6 多行字符串是否有最大长度?

javascript - 如何为 HEAD 标签动态添加 CSS 样式?

jquery - 如何将图表 x 轴刻度标签置于刻度之间的中心

jquery - 有没有带有加载更多按钮的无限滚动插件?

javascript - 限制动态数据源中一个html元素的数量

javascript - 从 HTML 表单获取 spring-boot REST 请求参数为 null

jquery - 使用 jQuery 检查多选中未选择的选项数量

javascript - 我想获取 HTML 表中每个 href 单击的第一列行的值

javascript - 为什么我的用于删除焦点文本并在模糊时重新添加文本的 jQuery 插件不起作用?