Javascript 在执行keyup或keydown时,textbox为jQuery autocomplete获取值而不是标签
这让我快发疯了。我到处都找过了,但似乎没有一个解决办法有效 当所有标签值正确加载到“自动完成”下拉列表中时,“自动完成”工作正常。我可以用鼠标选择任何标签值,相同的值会显示在文本框中。 但是,当我使用keyup或keydown选择标签时,文本框获取的是值而不是标签。 比如说这个数据,Javascript 在执行keyup或keydown时,textbox为jQuery autocomplete获取值而不是标签,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,这让我快发疯了。我到处都找过了,但似乎没有一个解决办法有效 当所有标签值正确加载到“自动完成”下拉列表中时,“自动完成”工作正常。我可以用鼠标选择任何标签值,相同的值会显示在文本框中。 但是,当我使用keyup或keydown选择标签时,文本框获取的是值而不是标签。 比如说这个数据, [{"label":"Tom Smith","value":"1234"},{"label":"Tommy Smith","value":"12321"}] 在按下键时,如果我选择“Tom Smith”,文本框将
[{"label":"Tom Smith","value":"1234"},{"label":"Tommy Smith","value":"12321"}]
在按下键时,如果我选择“Tom Smith”,文本框将获得值“1234”
我的自动完成代码如下所示:
$('.autocompleteEval').autocomplete({
source: '@Url.Action("autocompleteEvalList")',
minLength: 2,
select: function (event, ui) {
debugger;
event.preventDefault();
$(this).val(ui.item.label);
if (ui.item.value == "-1") {
$('.autocompleteEval').val('');
$('#EvaluatorAjax').hide();
}
else {
$('.autocompleteEval').val(ui.item.label);
$('#EvaluatorAjax').hide();
}
event.preventDefault();
return false;
}
, change: function (event, ui) {
if (!ui.item) {
$('.autocompleteEval').val('');
}
else {
$('.autocompleteEval').val(ui.item.label);
$(this).attr('actionId', ui.item.values);
$('#EvaluatorAjax').hide();
}
}
, search: function (event, ui) {
$('#EvaluatorAjax').css('visibility', '');
}
, response: function (event, ui) {
$('#EvaluatorAjax').css('visibility', 'hidden');
}
}).focus(function (event, ui) {
event.preventDefault();
$('.autocompleteEval').val(ui.item.label);
return false;
});
非常感谢您在这方面的任何帮助/建议(可能将按键事件连接到自动完成,不确定)
谢谢我就是这样让它工作的。不知何故错过了jQuery API.keyup()和.keydown()函数。我希望这对其他人有帮助 html代码如下-
解析的代码如下所示
$('.autocompleteEval').autocomplete({
source: '@Url.Action("autocompleteEvalList")',
minLength: 2,
select: function (event, ui) {
debugger;
event.preventDefault();
$(this).val(ui.item.label);
if (ui.item.value == "-1") {
$('.autocompleteEval').val('');
$('#EvaluatorAjax').hide();
}
else {
$('.autocompleteEval').val(ui.item.label);
$('#EvaluatorAjax').hide();
}
event.preventDefault();
return false;
}
, change: function (event, ui) {
if (!ui.item) {
$('.autocompleteEval').val('');
}
else {
$('.autocompleteEval').val(ui.item.label);
$(this).attr('actionId', ui.item.values);
$('#EvaluatorAjax').hide();
}
}
, search: function (event, ui) {
$('#EvaluatorAjax').css('visibility', '');
}
, response: function (event, ui) {
$('#EvaluatorAjax').css('visibility', 'hidden');
}
}).keyup(function (event, ui) {
if (ui.item.value == "-1") {
$('.autocompleteEval').val('');
}
else {
$('.autocompleteEval').val(ui.item.label);
}
return false;
}).keydown(function (event, ui) {
if (ui.item.value == "-1") {
$('.autocompleteEval').val('');
}
else {
$('.autocompleteEval').val(ui.item.label);
}
return false;
}).focus(function (event, ui) {
event.preventDefault();
$('.autocompleteEval').val(ui.item.label);
return false;
});
你能制作一个JSFIDLE或发布你的HTML吗?谢谢你阅读本期文章。不管怎样,我还是让它工作了。