在ListBox中根据TextBox中的Text选择ListItem

时间:2011-10-25 15:20:18

标签: jquery asp.net

我试图根据使用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>

有人有任何建议吗?

3 个答案:

答案 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');
                }
            });
        }
    });
});

这是您的代码,有一些更改 -

  • 现在检查'#txtMediaCode'文本框中值的长度 而不是页面上有多少元素
  • 每个选择器已更改为$('#lsMediaCodes > option').each( 这将选择所有选项元素而不仅仅是列表本身

演示 - http://jsfiddle.net/rMW2b/1/

答案 2 :(得分:0)

为了使这项工作,你需要做很多事情。首先,您需要为任何ASP.NET控件使用如下所示的选择器:

$('#<%= lsMediaCodes.ClientID %>')

当呈现asp.net控件时,其ID与您给asp.net控件的ID非常不同。

接下来,您将需要查看ListBox生成的html元素以保存每个列表项并选择那些而不是ListBox。

在项目中创建ASP.NET控件时,它不会呈现为ASP.NET,而是呈现为HTML。因此,你必须弄清楚每个控件呈现的内容,就像你想使用javascript / jQuery一样使用它。