我目前正在使用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 });
我想知道该怎么做。
答案 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,这当然是不必要的)