代码之家  ›  专栏  ›  技术社区  ›  Muhammad Akhtar

希望在javascript中激发下拉列表selectedIndexChanged事件

  •  5
  • Muhammad Akhtar  · 技术社区  · 15 年前

    我的页面上有下拉列表,我正在使用javascript从弹出窗口更改下拉列表的选定值。我在DropDownSelectedIndexChanged事件中有一些逻辑,所以当DropDownSelection从JavaScript更改时,我需要激发SelectedIndexChanged事件。

    4 回复  |  直到 15 年前
        1
  •  9
  •   Andrew    8 年前
    document.getElementById('<%= yourDropdown.ClientID %>').onchange();
    

    这应该有效,如果仍有错误,可以尝试如下操作:

    setTimeout('__doPostBack(\'yourcontrolClientSideID\',\'\')', 0);
    

    yourcontrolClientSideID 是呈现的客户端ID的ID。

        2
  •  1
  •   Canavar    15 年前

    在客户端调用这样的onchange方法:

    document.getElementById('yourDropdownsClientId').onchange();
    

    编辑: 如果将下拉列表的autopostback属性设置为true,则上面的代码将把页面发布到服务器,而不会调用服务器端事件。

    但是如果你想手动调用你的事件,你可以在你页面的代码隐藏中的任何地方这样做:

    myDropDownList_SelectedIndexChanged(null, new EventArgs());
    
        3
  •  1
  •   Muhammad Akhtar    15 年前

    下面是一个工作示例:

    function fireEvent(element,event){
    if(document.createEvent){
     // dispatch for firefox + others
    var evt = document.createEvent(”HTMLEvents”);
    evt.initEvent(event, true, true ); // event type,bubbling,cancelable
    return !element.dispatchEvent(evt);
    }
    else{
    // dispatch for IE
    var evt = document.createEventObject();
    return element.fireEvent(’on’+event,evt)
    }
    }
    
        4
  •  0
  •   Eric    15 年前

    是的……我认为卡纳瓦尔说的话会奏效,但它必须看起来像这样

    document.getElementById('<%=yourDropdown.ClientId%>').onchange();
    
    推荐文章