jQuery自动完成vs组合框
我调用一个web服务(使用SPServices)将我的所有项目放入一个数组,然后在我的自动完成调用中使用该数组。它工作得很好,但是我有几个问题jQuery自动完成vs组合框,jquery,jquery-autocomplete,Jquery,Jquery Autocomplete,我调用一个web服务(使用SPServices)将我的所有项目放入一个数组,然后在我的自动完成调用中使用该数组。它工作得很好,但是我有几个问题 如何拒绝用户选择不在拾取列表中的值?我认为组合框可以做到这一点,但是我不想将整个列表加载到页面上。。。这导致了#2 我使用的是一个选择器列表,其中包含数千项(目前为几百项),从我使用autocomplete收集的内容中,它将所有选择值加载到一个数组中,然后使用该数组进行拾取。对吗?有没有更好的方法来解决这个问题,这样我就可以使用部分输入的单词调用web服
大卫,这就是我所做的 在键启动时,使用新术语调用我的web服务,然后将返回的结果放入自动完成。结果也会被缓存 我还将在用户继续操作时检查指定的值是否包含在数组中,以确保它们没有弄乱该值
function setVendorLookup() {
var term = $(this).val().toLowerCase();
if (term.length > 2) {
if (vendors.join(" ").toLowerCase().indexOf(term) == -1) { //some caching
vendors = [];
$().SPServices({
operation: "GetListItems",
listName: "Yellow Pages",
async: false,
CAMLViewFields: "<ViewFields><FieldRef Name='VENDOR_ID'/><FieldRef Name='NAME1'/><FieldRef Name='CITY'/><FieldRef Name='STATE'/></ViewFields>",
CAMLQuery: "<Query><Where><Or><Contains><FieldRef Name='VENDOR_ID' /><Value Type='Text'>" + term + "</Value></Contains>" +
"<Contains><FieldRef Name='NAME1' /><Value Type='Text'>" + term + "</Value></Contains></Or></Where></Query>",
completefunc: function (xData, Status) {
$(xData.responseXML).find("[nodeName='z:row']").each(function () {
vendors.push($(this).attr("ows_VENDOR_ID") + " - " + $(this).attr("ows_NAME1") + ", " + $(this).attr("ows_CITY") + ", " + $(this).attr("ows_STATE"));
});
}
}); //SPServices
}
$(".vendor").autocomplete({
source: vendors,
minLength: 3
});
} else
vendors = [];
}
function validate()
{
if (jQuery.inArray($(".vendor").val(), vendors) == -1) {
myAlert("Validation Error", "Please select a valid vendor");
return false;
}
}
函数setVendorLookup(){
var term=$(this.val().toLowerCase();
如果(期限长度>2){
if(vendors.join(“”.toLowerCase().indexOf(term)==-1){//some缓存
供应商=[];
$().SPServices({
操作:“GetListItems”,
列表名称:“黄页”,
async:false,
CAMLViewFields:“”,
CAMLQuery:“+术语+”+
“+术语+”,
completefunc:函数(扩展数据、状态){
$(扩展数据.responseXML).find(“[nodeName='z:row']”)。each(函数(){
供应商.push($(this).attr(“ows_供应商ID”)+“-”+$(this).attr(“ows_名称1”)+,“+$(this.attr”(“ows_城市”)+,“+$(this.attr”(“ows_州”);
});
}
});//SPServices
}
$(“.vendor”).autocomplete({
资料来源:供应商,
最小长度:3
});
}否则
供应商=[];
}
函数验证()
{
if(jQuery.inArray($(“.vendor”).val(),vendors)=-1){
myAlert(“验证错误”,“请选择有效的供应商”);
返回false;
}
}
您正在使用jQueryUI自动完成吗?是的,object.autocomplete