我从这里使用jQuery自动完成:http://www.pengoworks.com/workshop/jquery/autocomplete.htm
$("#TestTextbox").autocomplete(
'<%= Url.Action("LookupAction") %>',
{
delay:10,
minChars:1,
matchSubset:1,
cacheLength:0,
onItemSelect:selectItem,
onFindValue:findValue,
formatItem:formatItem,
autoFill:false
}
);
function findValue(li)
{
if( li == null )
return alert("No match!");
if( !!li.extra )
var sValue = li.extra[0];
else
var sValue = li.selectValue;
alert(sValue);
}
function selectItem(li)
{
findValue(li);
}
function formatItem(row)
{
return row[0]; //value
}
LookupAction返回键值列表。 如果我添加一些按钮,为了获得自动完成器中所选值的键,我会有这样的事情:
function lookupAjax()
{
var oSuggest = $("#TestTextbox")[0].autocompleter;
oSuggest.findValue();
return false;
}
虽然我可以通过findValue函数中的警报函数看到输入文本框值的键,但问题是:是否有可能以某种方式从那里返回它们? (即var retVal = oSuggest.findValue())
谢谢!
答案 0 :(得分:1)
你试过这个吗?
function findValue(li)
{
if( li === null ){
alert('No match found!');
return false;
}
return ( !!li.extra ) ? li.extra[0] : li.selectValue;
}
请注意,我在函数末尾使用的符号称为“三元”。 You can find more information about it here.
编辑:试试这个
把它放在某个地方
<input type="hidden" id="id_of_hidden_text_field" />
然后将findValue更改为此
function findValue(li)
{
if( li === null ){
alert('No match found!');
}
$('#id_of_hidden_text_field').val(( !!li.extra ) ? li.extra[0] : li.selectValue);
}
现在,您可以参考$('#id_of_hidden_text_field').val();