整数的jquery自动完成

时间:2014-01-23 17:16:41

标签: jquery asp.net jquery-ui

我目前正在使用jquery auto complete.Funcionality工作正常,字符含义

当我输入" H"它正在拉动HDHR"意思是他所有的代码都以" H"开头。但我有一个intger列,其编号为01919,10191,89191等。这里当我输入0时,即使从1和8开始,它仍然会拉动所有数字。以下是我的代码。

代码背后

public string SuggestionList = "";

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {

    }

    string sql = "select mnr_workorder  from workorder_vw where mnr_status='A' ";
    OracleConnection con = new OracleConnection(ConStr);
    OracleCommand com = new OracleCommand(sql, con);

    try
    {
        con.Open();

        OracleDataReader dr;

        dr = com.ExecuteReader();

        while (dr.Read())
        {
            if (string.IsNullOrEmpty(SuggestionList))
            {
                SuggestionList += "\"" + dr["MNR_WORKORDER"].ToString() + "\"";
            }
            else
            {
                SuggestionList += ", \"" + dr["MNR_WORKORDER"].ToString() + "\"";
            }
        }
    }

    catch (Exception ex)
    {


    }
}

ASPX PAGE

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

<div class="ui-widget">
    <label for="TextBox1">
        WorkOrder no:
    </label>
    <input id="TextBox1" />
</div>
$(function() { 
    var availableTags = [<%= SuggestionList %>]; 
    $( "#TextBox1" ).autocomplete(
        { source: availableTags });

我想知道该怎么做。

1 个答案:

答案 0 :(得分:1)

jqueryUI自动完成小部件找不到项目开头。它找到包含您输入内容的项目。因此,在您的情况下,如果您开始输入0,它会在源中找到包含字符0的任何项目。

如果您查看我的basic example,其中包含以下3项:

var list = ['0123456465','0987654321','123456']

然后在框中输入5,您会看到所有3个选项出现。没有以5开头,但是其中都有5个。

幸运的是,该文档包含一个完全符合您要求的示例:Using a custom source callback to match only the beginning of terms

适用于您的案例,如下所示:

var availableTags = [<%= SuggestionList %>]; 
$( "#TextBox1" ).autocomplete(
    { 
         source: function( request, response ) {
                 var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
                 response( $.grep( availableTags , function( item ){
                       return matcher.test( item );
                 }));
        }
    });

更新了上面示例的实例:http://jsfiddle.net/BT4TP/1/ - 现在当您键入0时,只会显示2个条目,当您键入5时,不会显示任何内容。

(顺便说一下:你的html中还包括两次jquery UI,这当然是不必要的)