代码之家  ›  专栏  ›  技术社区  ›  Marcelo Cantos

当JavaScript从弹出窗口更改输入元素时引发“onChange”事件

  •  8
  • Marcelo Cantos  · 技术社区  · 15 年前

    我有一个带有表单元素和弹出窗口(由window.open打开)的网页。

    弹出窗口有一个javascript,可以更改opener窗口中的表单元素。这样做非常有效。。。

    $(opener.document.formelement).val(vals[0]);
    

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

    但那没什么用。

    有什么提示吗?由于其他页面元素的体系结构,我肯定必须触发onChange事件。

    Call Javascript onchange event by programatically changing textbox value ,但这个问题的建议解决方案似乎对我不起作用。可能是因为弹出窗口。

    3 回复  |  直到 7 年前
        1
  •  10
  •   gnarf    15 年前

    也许正是这扇窗户伤害着你。。。试着在你调用的开启器中创建一个函数。可能会有帮助吗?

    开场白:

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

    opener.changeMyElement(value);
    
        2
  •  2
  •   Nadia Alramli    15 年前

    这条线应该可以工作:

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

    根据jQuery documentation 此行触发每个匹配元素的更改事件。

    如果它对您不起作用,那么您的代码中的某个地方就有问题。是否可以通过手动更改表单元素来触发onchange事件?

        3
  •  0
  •   franzlorenzon    11 年前

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

    或者在您的上下文中:

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