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

时间:2016-12-26 13:53:20

标签: javascript jquery

我有一个输入字段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。 我无法在输入字段中添加任何内容。

3 个答案:

答案 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');