我有一个带有asp下拉列表的c#web用户控件。我想使用jquery或类似的方法根据网站的网址设置选定的值。
<asp:DropDownList ID="LangSelect" runat="server" AutoPostBack="True" OnSelectedIndexChanged="LangSelect_SelectedIndexChanged" >
<asp:ListItem Text="English" Value="English"> English</asp:ListItem>
<asp:ListItem Text="Français" Value="Français"></asp:ListItem>
<asp:ListItem Text="Español" Value="Español"></asp:ListItem>
<asp:ListItem Text="Deutsch" Value="Deutsch"></asp:ListItem>
</asp:DropDownList>
我试过这个:
<script>
if (window.location.href.indexOf('de') > 0) {
$("#LangSelect").val('Deutsch');
}
</script>
然而,它给出了一个错误:
未捕获的TypeError:无法读取null的属性'val'
答案 0 :(得分:1)
准备好文档以确保加载DOM,并使用LangSelect.ClientID
获取ASP.NET生成的HTML标记的LangSelect
ID。
$(document).ready(function () {
if (window.location.href.indexOf('de') > 0) {
$('#<%= LangSelect.ClientID %>').val('Deutsch');
}
});
答案 1 :(得分:0)
问题在于您的选择器,首先,您在开始时错过了#
以表明它是一个ID,但即便如此,您的元素设置为runat="server"
,这将更改实际的ID页面渲染时的html元素。
为此,您可以添加ClientIDMode="Static"
要锁定ID的元素,也可以将选择器更改为$([id$=LangSelect])
,我更喜欢使用ClientIDMode
。
答案 2 :(得分:0)
$(document).ready(function(){ if(window.location.href.indexOf(&#39; de&#39;)&gt; 0){ $(&#39;&LT;%= LangSelect.ClientID%GT;&#39)。发现(&#39;选项[值=&#39;德语&#39;]&#39)。丙(& #39;选择&#39;,true);
}
});