jQuery自动完成,并返回输入值的键

时间:2009-12-21 10:18:36

标签: jquery jquery-autocomplete

我从这里使用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 个答案:

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

来参考所选的ID