【发布时间】:2012-11-10 02:30:50
【问题描述】:
我已经尝试了在这里找到的所有设置选择选项的建议,包括 .val() .attr() 和 .prop()。我一定是做错了什么。目标是根据可选的 URL 参数选择选择标记的选项。无论我做什么,它都不会改变列表的值。
请注意,我被困在使用 jQuery 1.4
HTML 片段:
<select name="Widget91$Widget91$MetaTagList" onchange="javascript:setTimeout('__doPostBack(\'Widget91$Widget91$MetaTagList\',\'\')', 0)" id="WidgetTabHost_WidgetZone48_WidgetContainer91_Widget91_MetaTagList">
<option selected="selected" value="">None</option>
<option value="T-Code">T-Code</option>
<option value="Job Role">Job Role</option>
<option value="Functional Area">Functional Area</option>
<option value="Sub Area">Sub Area</option>
</select>
Javascript 编码:
$(document).ready(function(){
filter = getURLParameter("filter");
if (filter != null) {
jQuery("#<%=MetaTagList.ClientID%>").val(filter);
}
});
提供的Javascript:
$(document).ready(function(){
filter = getURLParameter("filter");
if (filter != null) {
jQuery("#WidgetTabHost_WidgetZone48_WidgetContainer91_Widget91_MetaTagList").val(filter);
}
});
【问题讨论】:
-
您是否确认 getURLParameter 正在返回您正在寻找的内容?而不是一些编码字符串?此外,如果您使用 asp.net 4 及更高版本,可能在下拉列表中设置 ClientIDMode="Static",然后您可以清理 ID 选择器并使用“MetaTagList”。
-
@Sushil - 那是因为你在比较 'name' 和 'id'...
-
因为您正在从 url 读取过滤器的值,它可能包含特殊字符,例如 %20(用于空格)
-
缺少的“").val(filter);是这个编辑器的神器。
-
我最初确实设置了一个警报,以确认 URL 参数是我所期望的。即使硬编码像
jQuery("#<%=MetaTagList.ClientID%>").val("T-Code");这样的值也不起作用。 @Sushil 我还尝试了返回生成的名称对象的 MetaTagList.UniqueID。不是问题。