我有一个输入字段type="hidden"
,它由javascript本身更改。
当此字段更改时,我希望触发事件/功能。
试过这个:
$(".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。 我无法在输入字段中添加任何内容。
答案 0 :(得分:5)
您可以使用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());
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="field" type="hidden" name="name">
<button id="btn">
Change Hidden Field Value
</button>
希望这有帮助!
答案 1 :(得分:1)
如果您无法从来源触发http.post()
事件,那只是一个黑客攻击。
change
可能不是一个好的解决方案。但有助于您无法从更改setInterval()
change
值的来源触发hidden
事件。
input
$("#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);
答案 2 :(得分:-3)
var element = $(".product_id");
element.on("change", function(){
alert('hey');
}).triggerHandler('change');
我们需要以编程方式触发它:
$('.product_id').val('abcd').triggerHandler('change');