jquery自动完成取消焦点事件
我有一个自动完成,但当我键入文本进行搜索并将鼠标移到自动完成的结果上时,自动完成中的文本将更改为先前的删除。有人知道如何改善这种行为吗 我在jQuery.com上读到 焦点类型:自动完成焦点 在焦点移动到未选择的项目之前,ui.item指 重点项目。焦点的默认操作是替换文本 字段的值与聚焦项的值,但仅当 焦点事件由键盘交互触发。取消这个 事件阻止更新值,但不阻止 菜单项无法聚焦jquery自动完成取消焦点事件,jquery,jquery-ui,jquery-autocomplete,Jquery,Jquery Ui,Jquery Autocomplete,我有一个自动完成,但当我键入文本进行搜索并将鼠标移到自动完成的结果上时,自动完成中的文本将更改为先前的删除。有人知道如何改善这种行为吗 我在jQuery.com上读到 焦点类型:自动完成焦点 在焦点移动到未选择的项目之前,ui.item指 重点项目。焦点的默认操作是替换文本 字段的值与聚焦项的值,但仅当 焦点事件由键盘交互触发。取消这个 事件阻止更新值,但不阻止 菜单项无法聚焦 但我不知道如何取消焦点事件。取消事件是通过调用event.prevent来完成的。默认情况下,无法取消所有事件,请选中
但我不知道如何取消焦点事件。取消事件是通过调用event.prevent来完成的。默认情况下,无法取消所有事件,请选中event.cancelable。
通过调用event.prevent来取消事件。默认情况下,并非所有事件都可以取消,请选中event.cancelable。
默认情况下,jquery ui的自动完成小部件不会替换鼠标悬停时的输入文本。但如果您复制了在以下位置找到的以下代码:
这正是你得到的。如果不希望出现这种行为,只需从第4-7行中删除焦点选项。默认情况下,jquery ui的自动完成小部件不会替换鼠标悬停时的输入文本。但如果您复制了在以下位置找到的以下代码:
这正是你得到的。如果您不希望出现这种行为,只需删除第4-7行中的“焦点”选项。没错,jquery autocpmplete自己也有这个bug[demo page][1]。 你可以得到它,如果你键入一些文本和自动完成显示了一些答案;然后你添加一些额外的文本,同时你在其中一个答案上悬停,程序将剪切你的额外文本。 您可以在自动完成小部件中检查源代码
blur: function (event, ui) {
// don't set the value of the text field if it's already correct
// this prevents moving the cursor unnecessarily
if (self.menu.element.is(":visible") && (self.element.val() !== self.term)){
self.element.val(self.term);
}
}
您可以通过注释这行self.element.valself.term来解决问题;
但这并不是一个好主意。您可以向jquery发布一个bug 你说得对,jquery autocpmplete在他们自己的[demo page][1]上有这个bug。 你可以得到它,如果你键入一些文本和自动完成显示了一些答案;然后你添加一些额外的文本,同时你在其中一个答案上悬停,程序将剪切你的额外文本。 您可以在自动完成小部件中检查源代码
blur: function (event, ui) {
// don't set the value of the text field if it's already correct
// this prevents moving the cursor unnecessarily
if (self.menu.element.is(":visible") && (self.element.val() !== self.term)){
self.element.val(self.term);
}
}
您可以通过注释这行self.element.valself.term来解决问题;
但这并不是一个好主意。您可以向jquery发布一个bug 如您在问题中所述,可以取消关于jQuery的自动完成。焦点是一个函数,第一个参数是对象。根据活动文档: 事件 。。。 它规范化了target、relatedTarget、metaKey和pageX/Y属性,并提供了stopPropagation和preventDefault方法 然后可以使用preventDefault方法,如下所示:
$( ".selector" ).autocomplete({
focus: function( event, ui ) {
event.preventDefault();
}
});
正如您在问题中所述,可以取消jQuery上的自动完成。焦点是一个函数,第一个参数是对象。根据活动文档: 事件 。。。 它规范化了target、relatedTarget、metaKey和pageX/Y属性,并提供了stopPropagation和preventDefault方法 然后可以使用preventDefault方法,如下所示:
$( ".selector" ).autocomplete({
focus: function( event, ui ) {
event.preventDefault();
}
});
这会将值设置为“输入”,并移除焦点
$( "#to" ).autocomplete({
source: availableTags,
select: function (event, ui) {
$( "#to" ).val( ui.item.label );
$('#to').blur();
return false ;
}
});
这会将值设置为“输入”,并移除焦点
$( "#to" ).autocomplete({
source: availableTags,
select: function (event, ui) {
$( "#to" ).val( ui.item.label );
$('#to').blur();
return false ;
}
});
它不会替换,它会删除新键入的文本,如果您键入足够快而不暂停。我没有焦点选项,但我必须添加以防止焦点事件。这个错误可以在这里演示,它不会替换,如果您输入足够快而不停顿,它会删除新输入的文本。我没有焦点选项,但我必须添加以防止焦点事件。这个bug可以在这里演示