【问题标题】:hidden input change event隐藏输入更改事件
【发布时间】:2012-09-16 20:11:29
【问题描述】:

如何检测隐藏输入值的变化?我已经尝试过这些方法但没有成功:

$('#id_inpout').live('change',function () {
        var id_el = $(this).attr('id');
        alert(id_el);
    });

$('#id_inpout').change(function () {
        var id_el = $(this).attr('id');
        alert(id_el);
    });

$('#id_inpout').bind('change',function () {
        var id_el = $(this).attr('id');
        alert(id_el);
    });

【问题讨论】:

  • 但是其他问题的答案都不可接受......即使是被赞成的人也涉及明确调用触发......
  • 这个答案怎么样? stackoverflow.com/questions/1003053/…
  • 你在改变什么,隐藏输入的id是什么..??给我们VIEW
  • 隐藏输入必须“手动”更改(而不是通过用户交互更改其值),您为什么需要此事件?您总是可以在更改输入的同时执行一个函数。

标签: jquery input hidden


【解决方案1】:

正如在重复中所说的那样,正如您所见,在 javascript 中所做的更改不会触发 change 事件。

因为我在重复项中没有找到可接受的答案(即答案不涉及更改隐藏值的设置方式),并且假设您确实需要(也就是说,您可以'当你改变隐藏的输入 val 时不要调用你的函数),你可以这样做:

function survey(selector, callback) {
   var input = $(selector);
   var oldvalue = input.val();
   setInterval(function(){
      if (input.val()!=oldvalue){
          oldvalue = input.val();
          callback();
      }
   }, 100);
}
survey('#id_inpout', function(){console.log('changed')}); 

但我最好使用更直接的解决方案(即在更改隐藏输入值时调用函数)。这个函数可能是你自己的一个简单的事件调度器(基本上是一个对象,它包装了一个函数列表,当它被调用时要调用)。

编辑:现在是 2015 年,对于想知道的人来说,不,网络世界的最新进展都没有解决这个问题。变异观察者不观察输入的 value 属性(它不是真正的 DOM),ES6 对象观察者对那些原生对象也无能为力。

【讨论】:

【解决方案2】:

您也可以在为隐藏输入分配新值后使用trigger('change')

$('#hidden_input').val('new_value').trigger('change');

【讨论】:

  • +1 太棒了!正是我需要的。现在为什么我没有想到呢?
  • 你也可以使用 $('#hidden_​​input').val('new_value').change();
猜你喜欢
  • 2011-10-24
  • 2018-03-09
  • 2019-11-11
  • 2019-08-16
  • 1970-01-01
  • 2018-10-05
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多