通过Javascript更改输入字段的更改

我有一个输入字段type="hidden" ,由javascript本身更改。

当此字段更改时,我希望触发事件/function。

试过这个:

 $(".product_id").on("change paste keyup input", function(event){alert('1');}); $(".product_id").blur(function(event){alert('1');}); $(".product_id").keypress(function(event){alert('1');}); 

但它似乎不起作用,因为其他JavaScript文件本身改变了该值。

我无法更改或添加到现有的JavaScript。 我无法在输入字段中添加任何内容。

您可以使用jQuery的trigger方法和change事件。

隐藏元素的值更改不会自动触发.change()事件。 因此,只要更改隐藏的输入,就应该告诉jQuery使用.trigger('change')方法触发它。

你可以这样做:

 $(function() { $("#field").on('change', function(e) { alert('hidden field changed!'); }); $("#btn").on('click', function(e) { $("#field").val('hello!').trigger('change'); console.log('Hidden Filed Value: ' + $('#field').val()); }); console.log('Hidden Filed Value: ' + $('#field').val()); }) 
    

如果您无法从源触发change事件,那只是一个黑客攻击。

使用setInterval()可能不是一个好的解决方案。 但有助于您无法从更改hidden input值的源触发change事件。

 $("#input")[0].oninput = function(){ $("#hidden").val($(this).val()); //setting hidden value } var oldVal = $("#hidden").val(); setInterval(function(){ //listening for changes var newVal = $("#hidden").val(); if(newVal !== oldVal){ console.log(newVal); oldVal = newVal; } }, 1000); 
    
 var element = $(".product_id"); element.on("change", function(){ alert('hey'); }).triggerHandler('change'); 

我们需要以编程方式触发它,如:

 $('.product_id').val('abcd').triggerHandler('change');