2012-02-09 58 views
4

通过$('input.filename').bind('change', function(){...})附加了一个带有更改事件的文本元素,并且存在一个弹出窗口,它通过$('input.filename').trigger('onchange')|.change()触发此事件。手动触发更改事件不起作用

例外:如果通过“onchange”属性触发的附加更改事件起作用!

附加代码如下:

input.change(function() { 
     var dims = { 
      'width': settings.previewWidth, 
      'height': settings.previewHeight 
     }; 
     updateImagePreview(input, preview, dims); 
    }); 

触发代码如下所示:

var input = $("input[name='any_name']", window.opener.document); 
    input 
     .val("<?=$choice ?>") 
     .trigger("onchange"); 
    window.close(); 

回答

0

你应该简单地做change()或触发( “变”):

var input = $("input[name='any_name']", window.opener.document); 
    input 
     .val("<?=$choice ?>") 
     .trigger("change"); 

以上只需

var input = $("input[name='any_name']", window.opener.document); 
    input 
     .val("<?=$choice ?>") 
     .change(); 

如果你使用jQuery < 1.4事件不会冒泡在Internet Explorer

+0

没有人没有帮助我。 – setty 2012-02-09 09:57:24

+0

也许这件事是在触发的地方,因为我从弹出式触发它,它在回调输入属性'onchange'时起作用。 – setty 2012-02-09 09:59:48

+0

@setty是否确定'var input = $(“input [name ='any_name']”,window.opener.document)'会返回一些内容?你有没有尝试过'alert(input.length);'之后呢? – 2012-02-09 10:00:33

2

我不完全了解情况,但正确的事件触发是change和使用jQuery不onchange

input.trigger('change'); // not "onchange" 

input.change(); 
+0

我已经调用了.change()并且没有工作 – setty 2012-02-09 09:51:16

+0

完整的上下文不是很清楚。触发代码是从弹出窗口还是父窗口调用的?触发器发生前是否正确设置了值? – 2012-02-09 09:54:32

+0

正是从弹出窗口。关于价值不错的猜测:)。我会试试看。 – setty 2012-02-09 10:00:50