如何从自动完成jquery函数中获取所需的值?

时间:2014-03-14 11:11:39

标签: jquery asp.net vb.net autocomplete

我的Jquery功能:

<script type="text/javascript">

function Origin(sender, args) {

    $(function () {
        $("#<%=txtInfo.ClientID %>").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("~/Webservice.asmx/Get") %>',
                    data: "{ 'prefix': '" + request.term + "'}",
                    dataType: "json",
                    type: "POST",
                    async: false,
                    mustMatch: true,
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        response($.map(data.d, function (item) {
                            return {
                                label: item.split('-')[0],
                                val: item.split('-')[1]
                            }
                        }))
                    },
                    error: function (response) {

                    },
                    failure: function (response) {

                    }
                });
            },

            select: function (e, i) {

                $("#<%=hdnInfo.ClientID %>").val(i.item.val);

                info1()                     

            },                    
            minLength: 0
        }).bind('focus', function () { $(this).autocomplete("search"); });              

        });
   }       

</script>

返回{label:item.split(&#39; - &#39;)[0],val:item.split(&#39; - &#39;)[1]}显示之后的值从&#39; - &#39;分开例如:如果值为&#34; abc-2223&#34;然后它返回&#34; abc&#34; 但如果价值是&#34; A-1 abc-2223&#34;然后它只返回&#34; A&#34;但我想要&#34; A-1 abc&#34;。

2 个答案:

答案 0 :(得分:1)

应用此逻辑。 JsFiddle

<script>
    $(function () {
        var items = ["abc-2223", "A-1 abc-2223"];
        $.each(items, function (key, value) {
            var item = value;

            var text = "";
            var chkItem = item.split('-')[0];
            if (chkItem.length == 1) {
                text = item.substring(item.lastIndexOf("-") + 0, item.length);
                text = item.replace(text, "");
            }
            else {
                text = chkItem;
            }
            alert(text);
        });
    });
</script>

<强>更新

当您要求更改代码时;请更改success功能,如下面的代码。

success: function (data) {
        response($.map(data.d, function (item) {

            //Filter item on condition
            var txtLabel = "";
            var chkItem = item.split('-')[0];
            if (chkItem.length == 1) {
                txtLabel = item.substring(item.lastIndexOf("-") + 0, item.length);
                txtLabel = item.replace(txtLabel, "");
            }
            else {
                txtLabel = chkItem;
            }

            return {
                label: txtLabel,
                val: item.split('-')[1] //you have not specified for value field.
            }
        }))
    },

答案 1 :(得分:0)

您的服务器在其响应中发送一个字符串数组(data.d)。

让您的服务器直接返回{"label":"...","val":"..."}个对象的数组。