我是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?
我不是专家。
答案 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);
}
});
});