【问题标题】:Jquery .on('change' does not detect javascript inputed fieldJquery .on('change' 未检测到 javascript 输入字段
【发布时间】:2016-07-06 22:36:11
【问题描述】:

查看以下代码片段

 $(document).on('input','#id1, #id2, #id3', function(){
        $id1 = $('#retail').val(); 
        $id2 = $('#tax').val(); 
        $id3 = $('#discount_per_unit').val();
        $total = Number($id1) + Number($id2) - Number($id3);
        $('#total').val($total);

    });

现在,用户可以输入#id1、#id2 的输入字段。但我根据条件为用户填写了#id3 的 Ajax。 .on(input.on(change 事件仅检测用户输入,但不检测 Ajax 输入。那么有没有办法让 jquery 也检测 Ajax 输入。

基本上我有一个用户可以选择的下拉菜单,Ajax 将使用下拉值来获取附加数据并自动填充到 id3 输入字段。看起来像这样。

$('#id3').val($somevalue); 

但是我的 .on("change" 没有检测到用户何时选择了不同的下拉选项,因此 #id3 已更新,但我使用 id1 虽然 id3 的计算没有更新,除非我更改了 id1 或 id2 上的某些内容。

【问题讨论】:

  • 一个简单的解决方案是将您的代码分解为一个函数,并从on(inputon(change 以及来自您的ajax 的success 回调中调用它。
  • ajax 输入是什么意思?您的意思是在ajax返回中完成的更改?如果是这样,您需要手动触发更改。除此之外,您需要使用.on("change", ...
  • 如何使用:$('#id3').val($somevalue).trigger('input')

标签: javascript jquery ajax


【解决方案1】:

您更新$('#id3').val($somevalue); 没有触发任何事件,它们是基于用户的操作。

如果你想手动触发一个,你可以这样做

$('#id3').val($somevalue).trigger('change') // or 'input'

【讨论】:

  • 正要回答我自己的问题。我偶然发现了类似的东西,这很有效。
猜你喜欢
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多