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

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

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

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

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

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

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

    3 回复  |  直到 9 年前
        1
  •  10
  •   gnarf    17 年前

    也许是那扇横窗伤害了你。..试着在opener中创建一个你调用的函数。可能有帮助吗?

    开场白:

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

    从弹出窗口:

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

    这条线应该起作用:

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

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

    如果它不适合你,那么你的代码中就有问题。您可以通过手动更改表单元素来触发onchange事件吗?

        3
  •  0
  •   franzlorenzon    13 年前

    您还可以执行以下操作:

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

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