我认为答案是值不存在客户端,因此无法检索。有更简单的方法来获取索引(假设任何初始化都已完成)。
selected index: $find("<%=cboName.ClientID%>").get_hiddenFieldControl().value;
selected index (again): $find("<%=cboName.ClientID%>").get_selectedIndex();
selected text: $find("<%=cboName.ClientID%>").get_textBoxControl().value;
据我所知,验证客户端上的组合框需要对索引或文本有一定的信心,或者某种服务器端解决方法。
为了直接回答主题行,可以使用每个组合框值在服务器端创建一个 javascript 数组,然后通过选定的索引引用客户端...
代码隐藏:
// write combobox values to asp:literal
foreach (ListItem i in cboName.Items)
litCboValues.Text += "\"" + i.Value.Replace("\"", "\\\"") + "\", ";
litCboValues.Text = litCboValues.Text.TrimEnd(new char[] {',', ' '});
aspx:
<script>
// array of values
var cboValues = [ <asp:Literal id="litCboValues" runat="server" /> ];
// add an alert to the combobox to test
function pageLoad()
{
$find("<%=cboName.ClientID%>").get_textBoxControl().onblur = function () {
alert( cboValues[$find("<%=cboName.ClientID%>").get_selectedIndex()] );
};
}
</script>
<asp:ComboBox id="cboName" runat="server" ...