2012-02-09 38 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