我刚刚将jQuery UI组合框添加到页面中.它似乎将选择限制为仅传入(或存在于选择列表中)的选择.我想要做的就是让用户输入一个不在选择列表中的值,然后将数据发送到服务器(在帖子上)并创建一个.我看不到任何禁用’验证’的选项.我该如何添加此功能?
– 编辑 –
我添加了代码以使自动完成工作时附加了一个按钮.但是,在调用Ajax方法时,这不起作用. Ajax方法正确返回json(颜色列表)但是当我开始输入’Re’时希望它会过滤掉包含Red的项目,但它没有.
这是我的代码:
var $colInput = $("#Colour").autocomplete({
source: function (request,response) {
$.ajax({
url: "/admin/stockitems/colours",dataType: "json",data: { id: null },success: function (data) {
var arr = [];
$.each(data,function (i,val) {
arr.push(val.Title);
});
response(arr);
}
});
},minLength: 0
}).addClass("ui-widget ui-widget-content ui-corner-left");
$("<button type='button'> </button>")
.attr("tabIndex",-1)
.attr("title","Show All Items")
.insertAfter($colInput)
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},text: false
})
.removeClass("ui-corner-all")
.addClass("ui-corner-right ui-button-icon")
.click(function () {
// close if already visible
if ($colInput.autocomplete("widget").is(":visible")) {
$colInput.autocomplete("close");
return;
}
$(this).blur();
$colInput.autocomplete("search","");
$colInput.focus();
});
解决方法
组合框演示使用底层选择元素作为自动完成小部件的后备存储.我不建议将此形式用于允许用户输入他们想要的任何内容的表单.
但是,您可以自己模拟组合框效果,而不会有太多麻烦:
var $input = $("#tags").autocomplete({
source: availableTags,minLength: 0
}).addClass("ui-widget ui-widget-content ui-corner-left");
$("<button type='button'> </button>")
.attr("tabIndex",-1)
.attr("title","Show All Items")
.insertAfter($input)
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},text: false
})
.removeClass("ui-corner-all")
.addClass("ui-corner-right ui-button-icon")
.click(function() {
// close if already visible
if ($input.autocomplete("widget").is(":visible")) {
$input.autocomplete( "close" );
return;
}
$(this).blur();
$input.autocomplete("search","" );
$input.focus();
});
基本上,这是自动完成小部件的默认行为,以及一个将下拉所有选项的按钮.
这样,支持字段是一个输入元素,您可以在表单提交时获取用户的输入,并将其添加到源下次.
这是一个有效的例子:http://jsfiddle.net/andrewwhitaker/CDYBk/1/