我试图根据使用jquery在文本框中输入的文本在ListBox中选择一个项目。如果在文本框中输入的文本长度大于1,我想循环遍历ListBox中的项目并比较每个项目的值,如果它与文本框中输入的数字相匹配,我需要选择/突出显示它ListBox。这是我正在做的但似乎不起作用。 ListBox ListItem在运行时从数据库中填充。
Asp.Net
<asp:TextBox ID="txtMediaCode" runat="server" MaxLength="2" Width="40px" />
<asp:ListBox ID="lsMediaCodes" runat="server" Width="296px" />
Jquery的
<script type="text/javascript">
$(document).ready(function () {
$('#txtMediaCode').keyup(function () {
if ($('#txtMediaCode').length > 1) {
$('#lsMediaCodes').each(function (i, option) {
if ($(option).val() == $('#txtMediaCode').val()) {
$(option).attr('selected', 'selected');
}
});
}
});
});
</script>
有人有任何建议吗?
答案 0 :(得分:1)
尝试这样的事情:
selectMediaCode ($("#<%txtMediaCode.ClientID%>").val());
selectMediaCode = function(text){
$("#<%=lsMediaCodes.ClientID%> option:contains('" + text + "')").attr("selected", "selected");
}
你也可以这样做:
selectMediaCode = function(text){
$("#<%=lsMediaCodes.ClientID%> option[value='" + text + "']").attr("selected", "selected");
}
修改强>
我想你甚至可以这样做:
selectMediaCode = function(text){
$("#<%=lsMediaCodes.ClientID%>").val(text);
}
答案 1 :(得分:1)
尝试 -
$(document).ready(function() {
$('#txtMediaCode').keyup(function() {
console.log('in')
if ($('#txtMediaCode').val().length > 1) {
$('#lsMediaCodes > option').each(function(i, option) {
if ($(option).val() == $('#txtMediaCode').val()) {
$(option).attr('selected', 'selected');
}
});
}
});
});
这是您的代码,有一些更改 -
$('#lsMediaCodes > option').each(
这将选择所有选项元素而不仅仅是列表本身答案 2 :(得分:0)
为了使这项工作,你需要做很多事情。首先,您需要为任何ASP.NET控件使用如下所示的选择器:
$('#<%= lsMediaCodes.ClientID %>')
当呈现asp.net控件时,其ID与您给asp.net控件的ID非常不同。
接下来,您将需要查看ListBox生成的html元素以保存每个列表项并选择那些而不是ListBox。
在项目中创建ASP.NET控件时,它不会呈现为ASP.NET,而是呈现为HTML。因此,你必须弄清楚每个控件呈现的内容,就像你想使用javascript / jQuery一样使用它。