.on('change'...)不会触发JS更改的数据

时间:2019-01-09 20:25:47

标签: javascript jquery

我试图在输入文本框更改时触发事件:

$('.packeta-selector-branch-id').on('change', function () { alert('helo'); })

仅当我在文本框中手动键入某些内容时,此方法才有效,但是在我使用外部JavaScript设置文本框值的情况下,则无效。

我创建了一个小jsfiddle来显示此内容:

https://jsfiddle.net/6vnuqxa0/

要尝试:

  1. 点击选择接送点
  2. 从列表中选择某项,然后单击“选择此接送点”。

任何想法如何解决此问题?

2 个答案:

答案 0 :(得分:1)

jQuery watch for domElement changes?的选定答案建议绑定到DOMSubtreeModified事件。我已经在您的小提琴中尝试过了,并且有效!答案确实提到此事件可能已被弃用,但值得研究。

在您的情况下,请向您的div添加一个ID,以使您拥有:

<div id="packeta-selector-branch-id" class="packeta-selector-branch-id"></div>

然后,当该div的内容更改时,以下代码将触发警报。

$('#packeta-selector-branch-id').bind('DOMSubtreeModified', function(e) {
  if (e.target.innerHTML.length > 0) {
    alert('helo');
  }
});

否则,我将查看窗口小部件本身,然后尝试确定它是否触发select上的任何事件。如果是这样,您可以在该事件上附加一些行为。

答案 1 :(得分:0)

单击按钮时触发

trigger('change')。但是输入的ID或名称会更好

$(document).off('click', '.button select-branch').on('click', '.button select-branch', function(){
    $('.packeta-selector-branch-id').trigger('change');
})