Javascript 以编程方式更新输入值时引发更改事件
我有一个自定义的选择菜单,当你点击一个选项时,它会更新相应的实际选择菜单的值Javascript 以编程方式更新输入值时引发更改事件,javascript,jquery,Javascript,Jquery,我有一个自定义的选择菜单,当你点击一个选项时,它会更新相应的实际选择菜单的值 $listItems.click(function(e) { e.stopPropagation(); $styledSelect.text($(this).text()).removeClass('active'); $this.val($(this).attr('rel')); $list.hide(); }); 问题是,我将更改事件挂接到选择菜单上,这些事件不会触发,因为该值是以编程方式更新的,
$listItems.click(function(e) {
e.stopPropagation();
$styledSelect.text($(this).text()).removeClass('active');
$this.val($(this).attr('rel'));
$list.hide();
});
问题是,我将更改事件挂接到选择菜单上,这些事件不会触发,因为该值是以编程方式更新的,而不是onblur
或onkeydown
$(document).on('change', '.js-PropertyPaddingTop', function() {
const value = $(this).val();
$('.UIObject.is-selected').css('paddingTop', value + 'px');
});
我也尝试过使用input
事件,但也不起作用
$(document).on('input', '.js-PropertyPaddingTop', function() {
const value = $(this).val();
$('.UIObject.is-selected').css('paddingTop', value + 'px');
});
有什么建议吗?这取决于你的情况,但很简单
。触发(“更改”)代码>有时可以做这项工作。在所选元素上触发激发DOM事件,这样您就可以自动调用所触发元素的所有回调
小警告-使用跳跳虎函数可能会导致循环事件循环,例如,如果您的输入触发事件更改
和回调也直接或通过以下其他方法调用它
我想你的代码应该是
$listItems.click(function(e) {
e.stopPropagation();
$styledSelect.text($(this).text()).removeClass('active');
$this.val($(this).attr('rel'));
$this.trigger("change"); // call "change" event
$list.hide();
});
您的此
是对文档的引用
?这是您自己的选择菜单或插件?就我个人而言,我不懂代码,你能补充一点细节吗?您是否尝试了.trigger()
?此
引用了实际的选择
标记。因此,该行正在设置实际select
的值。想象一下,我单击了一个按钮,更新了select
标记的值。我怎样才能抓住新的价值?<代码>选择< /代码>不知道它已经被更新了。这取决于这是什么,大多数jQuery UI插件使用附加的标签包装,如果这是你自己的下拉,也许你应该考虑添加函数来通过输入本身来设置这个值,而不是仅仅引导值。这是你自己的下拉列表?