DrS*_*Sat 5 jquery jquery-autocomplete jquery-ui-autocomplete
我希望为用户提供添加自己的变体的可能性,而不仅仅是建议的变体.但是当我在字段中键入内容并单击ENTER时,我的表单会提交.
然后我尝试捕获我的字段的keydown事件,但在这种情况下,我没有可能从使用箭头的建议中选择变体并输入键,因为ui参数未定义.
$('#field_id').on('keydown', function(event) {
if (event.keyCode == $.ui.keyCode.ENTER
|| event.keyCode == $.ui.keyCode.NUMPAD_ENTER)
{
$('#field_id').trigger('autocompleteselect');
}
});
$('#field_id').autocomplete({
source: [{"id":"20","value":"This is not mandatory decline reason"},{"id":"21","value":"You are have to be rejected"}]
minLength: 0
}).on('autocompleteselect', function(event, ui) {
// if I click on suggestion using mouse - everything is ok
// but not for ENTER-key choosing
// I want something like that:
if (ui.item) {
id = ui.item.id;
value = ui.item.value;
} else {
id = 'my_new_item';
value = $(this).val();
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
如果你想阻止表单在输入时提交,你可以使用preventDefault:
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
Run Code Online (Sandbox Code Playgroud)
对于自动完成,请注意,按下 Enter 键时触发“autocompleteselect”事件将在用户在建议项目上按 Enter 时触发“autocompleteselect”处理程序两次。为了避免这种情况和缺少 ui 参数,请尝试使用响应回调将用户输入添加为建议项目并将 autofocus 设置为 true。
下面是一个示例,其中当自动完成没有匹配项时,用户输入被添加到建议列表中。
$('#field_id').autocomplete({
source: [{
"id": "20",
"value": "This is not mandatory decline reason"
}, {
"id": "21",
"value": "You are have to be rejected"
}],
minLength: 0,
autoFocus: true,
response: function (event, ui) {
if (ui.content.length == 0) {
ui.content.push({
label: "New Search value: " + $(this).val(),
value: $(this).val(),
id: 0
});
}
}
}).on('autocompleteselect', function (event, ui) {
id = ui.item.id;
value = ui.item.value;
return false;
});
Run Code Online (Sandbox Code Playgroud)
这是上面的jsfiddle示例。
希望这可以帮助。