jQuery自动完成JSON

时间:2014-05-14 21:43:24

标签: jquery json

我是Stackoverflow的新手。第一次遇到问题,我需要一些帮助。

我有一个回显的方法:

[{"label":"Paris - London - Rome","value":"1"},{"label":"Lison - Dublin - Berlin","value":"2"},{"label":"Atena - Paris - Warsaw","value":"4"},{"label":"Moscow - New York - San Francisco","value":"7"}]

我的HTML:

<input type="text" class="auto" name="label"/>
<input name="tr" type="hidden"/>

我的JS:

$(".auto").autocomplete({
        source : function(request, response) {
            $.get(url, function(data) {
                var source = eval(data);
                response(source);
            })
        },
        minLength : 2,
        select : function(event, ui) {
            event.preventDefault();
            this.value = ui.item.label;
            $(this).next().val(ui.item.value);
        }
    });

它有效,但如果我输入罗马。它向我展示了所有选择,而不是巴黎 - 伦敦 - 罗马。

如果将json放到源代码中它可以正常工作。下面的代码可以正常工作,但上面的代码没有。

$(".auto").autocomplete({
        source : [{"label":"Paris - London - Rome","value":"1"},{"label":"Lison - Dublin - Berlin","value":"2"},{"label":"Atena - Paris - Warsaw","value":"4"},{"label":"Moscow - New York - San Francisco","value":"7"}],
        minLength : 2,
        select : function(event, ui) {
            event.preventDefault();
            this.value = ui.item.label;
            $(this).next().val(ui.item.value);
        }
    });

我认为这可能与回应有关吗?还是与eval?

我不是专家。

1 个答案:

答案 0 :(得分:0)

修正:

$(document).ready(function(){
$(".auto").autocomplete({
    source : [{"label":"Paris - London - Rome","value":"1"},{"label":"Lison - Dublin - Berlin","value":"2"},{"label":"Atena - Paris - Warsaw","value":"4"},{"label":"Moscow - New York - San Francisco","value":"7"}],
    minLength : 2,
    select : function(event, ui) {
        event.preventDefault();
        var myArray = ui.item.label.split('-');
        var valor = this.value;
        var elige;
        $.each(myArray, function( index, value ) {
            console.log(value);
            console.log(valor);
            if(value.match(valor)){ 
                elige = value;
            }
        });
        this.value = elige;
        $(this).next().val(ui.item.value);
    }
});
});

工作小提琴:http://jsfiddle.net/robertrozas/kV4Jn/