2009-05-12 16 views
8

Bir form öğesi ve bir açılır pencere (window.open tarafından açılmış) içeren bir web sayfam var.Girdi Öğesi JavaScript tarafından Popup Penceresinden değiştirildiğinde "onChange" olayını artırın

Her ikisinde jQuery var.

Açılır pencerede, açıcı penceresindeki form öğelerini değiştirebilen bir javascript vardır. Bu, mükemmel bir şekilde çalışır ...

Ancak bunu yaparak onChange olayı tetiklenmez. Bu, diğer bazı sayfa öğeleri tarafından gerekli olurdu. Bu yüzden

$(opener.document.formelement).change(); 

ile onChange olayı kendim ateş etmeye çalıştı Ama bu bir şey yapmaz.

Herhangi bir ipucu? Diğer sayfa öğelerinin mimarisi nedeniyle bu onChange olayını kesinlikle kullanmalıyım.

Bu soru Call Javascript onchange event by programatically changing textbox value'a benzer, ancak önerilen soruların çözümleri benim için işe yaramıyor gibi görünmüyor. Belki de bu pop-up yüzünden.

cevap

10

Belki de size zarar veren penceredir ... Bunun yerine çağırdığınız açıcının içinde bir işlev yapmayı deneyin. Yardımcı olabilir? açacağı ise

: açılır penceresinden

window.changeMyElement = function(value) { 
    $(formelement).val(value).change(); 
} 

:

opener.changeMyElement(value); 
+0

Teşekkürler. Bu mükemmel çalıştı! – BlaM

+2

açıcı. $ ('...') val (newval) .change(); – Tracker1

2

Bu çizgi çalışması beklendiği:

$(opener.document.formelement).change(); 

jQuery documentation göre, bu çizgi, her eşleşen elemanın değişim olayını tetikler.

Sizin için çalışmıyorsa, kodunuzda bir sorun var demektir. Form öğesinde el ile değiştirerek onchange olayını tetikleyebilir misiniz?

+0

Y:

window.opener.document.getElementById('controlname').fireEvent('onchange'); 

Veya bağlamında

es yapabilirim. Mükemmel çalışır (genellikle gizli bir öğe olmasına rağmen). Ancak, güvenlik nedenleriyle bir açılır pencereden "açıcı" da JavaScript'in çalıştırılmasının yasak olduğunu sanıyorum. Ve bir olayı tetiklemek JavaScript'i çalıştırırdı. – BlaM

0

Ayrıca yapabilirsiniz:

$(opener.document.formelement).fireEvent('onchange'); 
+1

Bunun gerçekten IE için yararlı olduğunu ve sadece 9'dan daha eski sürümler olduğu konusunda uyarıda bulunun: http://help.dottoro.com/ljvtddtm.php – RustyTheBoyRobot

İlgili konular