所以我有一个弹出窗口,在完成后将改变“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();
答案 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");