jQuery автозаполнение и возврат ключа для введенного значения - PullRequest
0 голосов
/ 21 декабря 2009

Я использую автозаполнение 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 ())

Спасибо!

1 Ответ

1 голос
/ 21 декабря 2009

Вы пробовали это?

function findValue(li) 
{
        if( li === null ){           
           alert('No match found!');
           return false;
        }
        return ( !!li.extra ) ? li.extra[0] : li.selectValue; 
}

Обратите внимание, что обозначение, которое я использовал в конце функции, называется «троичным». Подробнее об этом можно прочитать здесь.

РЕДАКТИРОВАТЬ: Попробуйте это

Поместите это на страницу где-нибудь

<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();

...