.change不检测输入变化的值

时间:2016-12-22 10:03:39

标签: jquery input

所以我有一个弹出窗口,在完成后将改变“input1”的值并关闭它自己。它有效,但我无法检测到值“input1”的变化。

我试过像这样使用jquery函数:

$( document ).ready(function() {
    $( "#input1" ).change(function() {
        console.log("this was changed");
    });
});

但是没有运气,当值改变时,我的功能不会运行。

主要文件窗口:

<form name="myform">
  <input name="input1" id="input1" value="">
</form>            

POP UP:

parent.opener.parent.document.myform.input1.value = "New Value";
self.close();

3 个答案:

答案 0 :(得分:0)

由于您以编程方式更改value input,因此DOM事件处理程序无法识别它。要触发它,只需添加以下代码行。

$( "#input1" ).trigger('change');

也不能这一行

parent.opener.parent.document.myform.input1.value = "New Value";

简单地写成$( "#input1" ).val("New Value");因为id's是唯一的(或意味着唯一的)

所以最终的代码是

$( "#input1" ).val("New Value").trigger('change'); // trigger it when you change it
self.close();

答案 1 :(得分:0)

Here's my Fiddle。它显然使用JQuery。我在对象文字中包含了已封装和碎片化的代码,因此您可以在触发更改时附加事件。希望这会有所帮助。

<强> HTML

<form name="myform">
  <input name="input1" id="input1" value="">
</form>
<hr />
<button data-exec="openPopup">OPEN POPUP</button>
<p id="changes">IS IT CHANGED?</p>

<强> JAVASCRIPT

var obj = {
  init: function() {
    obj.behaviours.init();
  },


  behaviours: {

    init: function() {
      obj.behaviours.inputChange();
      obj.behaviours.openPopup();
    },

    inputChange: function() {
      $(document).on('change', '#input1', function() {
        $('#changes').html('CHANGED!! ' +$(this).val());
      });
    },

    openPopup: function() {
      $(document).on('click', '[data-exec="openPopup"]', function(e) {
        if (confirm('change value?')) {
            document.myform.input1.value = "New Value";
            $('#input1').trigger('change');
          };
      });
    }
  }


};

jQuery(document).ready(function() {
  obj.init();
});

答案 2 :(得分:-1)

因此你已经使用了jQuery。使用jQuery触发更改:

$( "#input1" ).trigger("change");

$( parent.opener.parent.document.myform.input1 ).trigger("change");