通过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');