jQuery completamento automatico, e il ritorno chiave per il valore immesso
-
20-09-2019 - |
Domanda
Sto usando jQuery completamento automatico da qui: 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
}
il tasto invio LookupAction | lista valori. se aggiungo qualche tasto, per ottenere la chiave per il valore selezionato in autocompletamento, avrò qualcosa di simile:
function lookupAjax()
{
var oSuggest = $("#TestTextbox")[0].autocompleter;
oSuggest.findValue();
return false;
}
Mentre posso vedere chiave per iscritto ai valori TextBox tramite funzioni di allarme in funzione findValue, la domanda è: è possibile restituirli da lì in qualche modo? (Cioè var retVal = oSuggest.findValue ())
Grazie!
Soluzione
Hai provato questo?
function findValue(li)
{
if( li === null ){
alert('No match found!');
return false;
}
return ( !!li.extra ) ? li.extra[0] : li.selectValue;
}
Si prega di notare che la notazione ho usato alla fine della funzione si chiama "ternario". Potete trovare ulteriori informazioni su di esso qui.
EDIT: Prova questo
Mettere questo sulla pagina da qualche parte
<input type="hidden" id="id_of_hidden_text_field" />
Quindi modificare findValue a questo
function findValue(li)
{
if( li === null ){
alert('No match found!');
}
$('#id_of_hidden_text_field').val(( !!li.extra ) ? li.extra[0] : li.selectValue);
}
Ora è possibile fare riferimento al ID scelti facendo riferimento a $('#id_of_hidden_text_field').val();