【问题标题】:Want to fire Dropdown SelectedIndexChanged Event in Javascript想要在 Javascript 中触发 Dropdown SelectedIndexChanged 事件
【发布时间】:2010-11-03 16:17:57
【问题描述】:

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

【问题讨论】:

    标签: javascript html asp.net dom-events


    【解决方案1】:
    document.getElementById('<%= yourDropdown.ClientID %>').onchange();
    

    这应该可以了,如果你仍然得到一些错误,你可以这样尝试:

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

    yourcontrolClientSideID 是 Rendered Client ID 的 ID。

    【讨论】:

      【解决方案2】:

      这是一个工作示例:

      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)
      }
      }
      

      【讨论】:

        【解决方案3】:

        在客户端调用类似的 onchange 方法:

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

        编辑:如果您将下拉菜单的 AutoPostBack 属性设置为 true,则上面的代码会将您的页面发布到服务器,然后您的服务器端事件将被调用。

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

        myDropDownList_SelectedIndexChanged(null, new EventArgs());
        

        【讨论】:

        • 但我想触发服务器端下拉 SelectedIndexChanged 事件,我在服务器端有我的逻辑。
        • 但是做这个 document.getElementById('yourDropdownsClientId').onchange();获取 javascript 错误。
        【解决方案4】:

        是的...我认为 Canavar 所说的会起作用,但它必须看起来像这样

        document.getElementById('<%=yourDropdown.ClientId%>').onchange();
        

        【讨论】:

          猜你喜欢
          • 2018-09-15
          • 2010-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-21
          • 1970-01-01
          相关资源
          最近更新 更多