【问题标题】:How to run DropDownList change event如何运行 DropDownList 更改事件
【发布时间】:2014-04-07 18:01:26
【问题描述】:

您好,我尝试更改 ddl.selectedIntex=1,我看到 ddl 的值正在更改,但事件 ddl.change 不起作用。

$("#ctl00_PlaceHolderMain_AccountsDDL_ddlAccounts")[0].selectedIndex = 1; 

这只是设置值,但我需要运行 .change 函数

有什么想法吗? 我在控制台中尝试了这个,所有的工作都很好,你知道我怎么能通过将 PostData 传递给 HttpWebRequest 来做到这一点?

我在控制台中尝试了这个,一切都很好,你知道我怎么能通过将 PostData 传递给 HttpWebRequest 来做到这一点 我添加了我的代码

HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create("https://www.com/Pages/current.aspx");
PostString += "ctl00$PlaceHolderMain$AccountsDDL$ddlAccounts=" + Number + "&";//Here
 byte[] byteArray = Encoding.ASCII.GetBytes(PostString);
    postRequest.ContentLength = byteArray.Length;
    Stream newStream = postRequest.GetRequestStream();
    newStream.Write(byteArray, 0, byteArray.Length);
    newStream.Close();
    HttpWebResponse postResponse = (HttpWebResponse)postRequest.GetResponse();

【问题讨论】:

  • 使用__doPostBack('ctl00_PlaceHolderMain_AccountsDDL_ddlAccounts','');$("#ctl00_PlaceHolderMain_AccountsDDL_ddlAccounts").change()
  • 我在控制台中试试这个,一切都很好,我可能知道如何通过将 PostData 传递给 HttpWebRequest 来做到这一点?

标签: c# javascript jquery html asp.net


【解决方案1】:

通过代码更改值时不会触发更改事件。您需要致电change()trigger("change")

$("#ctl00_PlaceHolderMain_AccountsDDL_ddlAccounts").change()

$("#ctl00_PlaceHolderMain_AccountsDDL_ddlAccounts").trigger("change")

作为附加说明,使用Control.ClientID 获取javascript 中的元素,而不是使用硬编码的asp.net 生成的客户端ID。

$("#<%= ddlAccounts.ClientID %>").change()

【讨论】:

  • Adil 是对的,如果以编程方式(通过 javascript)更改值,则不会触发更改事件。
  • $('[id$="ddlAccounts"]')也可以用来获取元素。
  • 是的,但我认为这种方法效率较低,因为它必须搜索匹配元素而不是直接获取元素。
  • 如果将脚本放在.js 文件中,$("#&lt;%= ddlAccounts.ClientID %&gt;") 将不起作用。在这种情况下,$("#dllAccounts") 可以与DropDownList 的属性ClientIdMode = "static" 一起使用,如果ClientIdMode 属性未设置,则可以使用$('[id$="ddlAccounts"]')
  • 你能帮我发送数据到 HttpWebRequest 我在上面添加了新代码
【解决方案2】:

或者直接使用这个

$("[id$=ddlAccounts]").change();

使用 $ 'Ends with' 来缩短选择器的名称

【讨论】:

    【解决方案3】:
     <script>
            $("select").change(function () {
                var str = "";
                $("select option:selected").each(function () {
                    str += $(this).text() + " ";
                    $("#DropDownList1")[0].selectedIndex = 5;
                });
                $("div").text(str);
            }).change();
    
        </script>
        <div></div>
    

    试试这个......它可能对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      相关资源
      最近更新 更多