停止 Ajax 个? (自动完成多个值)
Stop Ajax if ? (Autcomplete with multiple values)
因此,我正在使用 jQuery 编写一个非常简单的自动完成脚本,该脚本具有多个值(用逗号分隔)。
如果最后一个标签长度 > 1,建议开始,否则不应触发并删除任何建议。
代码如下:
function show_tags () {
var tags = jQuery( this ).val();
var last_tag= getLast(tags);
if (last_tag.length>1) {
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: {
'action': 'suggest_tags',
't': tags
}
}).done(function(response) {
jQuery('.suggestions').html(response);
});
}
else {
jQuery('.suggestions').html('');
}
}
jQuery( ".search-field" ).on( "keyup", show_tags);
但是...
我发现这可能不是最好的方法,因为如果有人打字太快,else 部分将在前面的 ajax 请求完成之前触发。
如果用户在之后快速输入昏迷,我怎么能中止之前的请求,所以,如果 last_tag 长度 <=1?
我觉得我将不得不为此重新考虑整个事情。没有快速修复方法吗?
我有点迷茫和疲倦。
有什么帮助吗?
我建议你 disable
元素一 Ajax 开始,enable
它一旦完成,使用 .prop()
, another way is for sure to throttle/debounce Ajax 调用(不确定如果该插件适用于 jQuery 3):
function show_tags () {
var textInput = jQuery( this );
var tags = jQuery( this ).val();
var last_tag= getLast(tags);
if (last_tag.length>1) {
textInput.prop( "disabled", true );
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: {
'action': 'suggest_tags',
't': tags
}
}).done(function(response) {
jQuery('.suggestions').html(response);
textInput.prop( "disabled", false );
});
}
else {
jQuery('.suggestions').html('');
}
}
jQuery( ".search-field" ).on( "keyup", show_tags);
因此,我正在使用 jQuery 编写一个非常简单的自动完成脚本,该脚本具有多个值(用逗号分隔)。 如果最后一个标签长度 > 1,建议开始,否则不应触发并删除任何建议。
代码如下:
function show_tags () {
var tags = jQuery( this ).val();
var last_tag= getLast(tags);
if (last_tag.length>1) {
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: {
'action': 'suggest_tags',
't': tags
}
}).done(function(response) {
jQuery('.suggestions').html(response);
});
}
else {
jQuery('.suggestions').html('');
}
}
jQuery( ".search-field" ).on( "keyup", show_tags);
但是...
我发现这可能不是最好的方法,因为如果有人打字太快,else 部分将在前面的 ajax 请求完成之前触发。
如果用户在之后快速输入昏迷,我怎么能中止之前的请求,所以,如果 last_tag 长度 <=1?
我觉得我将不得不为此重新考虑整个事情。没有快速修复方法吗? 我有点迷茫和疲倦。
有什么帮助吗?
我建议你 disable
元素一 Ajax 开始,enable
它一旦完成,使用 .prop()
, another way is for sure to throttle/debounce Ajax 调用(不确定如果该插件适用于 jQuery 3):
function show_tags () {
var textInput = jQuery( this );
var tags = jQuery( this ).val();
var last_tag= getLast(tags);
if (last_tag.length>1) {
textInput.prop( "disabled", true );
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: {
'action': 'suggest_tags',
't': tags
}
}).done(function(response) {
jQuery('.suggestions').html(response);
textInput.prop( "disabled", false );
});
}
else {
jQuery('.suggestions').html('');
}
}
jQuery( ".search-field" ).on( "keyup", show_tags);