typeahead 不允许自由文本输入?
typehead disallow free text entry?
我在我的文本框中使用 bootstrap typeahead 通过 Ajax 调用绑定用户列表
这是我的代码
$("#userMapping_User").typeahead({
source: function (query, process) {
return $.get($_GetUsers_ByLoggedInUser, { term: query }, function (result) {
var resultList = [];
$.map(result, function (item, id) {
if (item && (item.first_name || item.last_name)) {
var displayName = item.first_name + ' ' + item.last_name;
var user = { id: item.UserId, name: displayName ? displayName.trim() + ' - ' + item.email : '' };
resultList.push(user);
}
});
return process(resultList);
});
},
minLength: 2,
autoSelect: true,
afterSelect: function (e) {
$("#userMapping_SelectedUserId").val(e.id);
$("#userMapping_User").removeClass('form-error');
$(".error-block").remove();
}
});
但问题是我想禁用自由文本输入,这样用户就无法输入无效值,只能插入列表中可用的那些值?
是的,你可以用下面的代码来做这件事。
var myData = [...]; // This array will contain all your possible data for the typeahead
$("#my-type-ahead").typeahead({source : myData})
.blur(validateSelection);
function validateSelection() {
if(source.indexOf($(this).val()) === -1)
alert('Error : element not in list!');
}
这是@samuel 在Link 中给出的答案。但我想你可以通过使用回调函数并防止输入值来做得更好。由你选择。
干杯..!!
我在我的文本框中使用 bootstrap typeahead 通过 Ajax 调用绑定用户列表 这是我的代码
$("#userMapping_User").typeahead({
source: function (query, process) {
return $.get($_GetUsers_ByLoggedInUser, { term: query }, function (result) {
var resultList = [];
$.map(result, function (item, id) {
if (item && (item.first_name || item.last_name)) {
var displayName = item.first_name + ' ' + item.last_name;
var user = { id: item.UserId, name: displayName ? displayName.trim() + ' - ' + item.email : '' };
resultList.push(user);
}
});
return process(resultList);
});
},
minLength: 2,
autoSelect: true,
afterSelect: function (e) {
$("#userMapping_SelectedUserId").val(e.id);
$("#userMapping_User").removeClass('form-error');
$(".error-block").remove();
}
});
但问题是我想禁用自由文本输入,这样用户就无法输入无效值,只能插入列表中可用的那些值?
是的,你可以用下面的代码来做这件事。
var myData = [...]; // This array will contain all your possible data for the typeahead
$("#my-type-ahead").typeahead({source : myData})
.blur(validateSelection);
function validateSelection() {
if(source.indexOf($(this).val()) === -1)
alert('Error : element not in list!');
}
这是@samuel 在Link 中给出的答案。但我想你可以通过使用回调函数并防止输入值来做得更好。由你选择。
干杯..!!