asp.net dropdownlist onchange使用jquery为渲染的html

时间:2012-01-06 00:00:46

标签: jquery redirect drop-down-menu onchange

    <asp:DropDownList runat="server" id="DropDownList1" 
DataSourceID="spdatasource1" DataValueField="CategoryName" 
AutoPostBack="false">
     </asp:DropDownList>  

此asp.net dropdonwlist控件呈现以下html。它是数据绑定到sharepoint列表。正在动态填充下拉选项。我试图操作选择一个选项重定向到这样的链接:它确实被重定向到网站,但它总是传递第一个选项值。如果我选择癌症,它仍然是http://somesite/events/Pages/default1.aspx?cat=Select类别..为什么??

<select name="ctl00$PlaceHolderMain$ctl00$DropDownList1" id="ctl00_PlaceHolderMain_ctl00_DropDownList1">
        <option value="Select Category">Select Category</option>
        <option value="All Categories">All Categories</option>
        <option value="Cancer">Cancer</option>
        <option value="Health Lecture">Health Lecture</option>
        <option value="Heart Health">Heart Health</option>
</select>

Jquery用于获取选项并传递给url:

var selectedOption = $("#ctl00_PlaceHolderMain_ctl00_DropDownList1 option:selected").val();

            $("#ctl00_PlaceHolderMain_ctl00_DropDownList1").change(function(e) {
                  window.location.href = 'http://somesite/events/Pages/default1.aspx?cat=' + selectedOption
            });

1 个答案:

答案 0 :(得分:0)

因为您在将功能绑定到您选择下拉列表的更改事件的块之前设置了selectedOption的值。

代码运行时。 $("#ctl00_PlaceHolderMain_ctl00_DropDownList1 option:selected").val()的值是“选定类别”。然后在您的函数中使用该值。

您的函数需要在更改对象时从对象获取值,方法是使用$(this)获取对函数内对象的引用。

$("#ctl00_PlaceHolderMain_ctl00_DropDownList1").change(function(e) {
    window.location.href = 'http://somesite/events/Pages/default1.aspx?cat=' + $(this).val();
    });