我有2个输入框:'标题'和'网址'。
'名称'使用onblur
事件来调用函数GetURL()
和' URL'使用onkeyup
事件来调用函数GetURL()
。
GetURL()
函数检查输入内容然后调用使用AJAX返回格式化字符串。
该功能如下所示,但如何添加延迟,以便在用户快速输入时,该功能不会被重复调用?
<input type="text" id="Title" name="Title" onblur="GetURL('Title');">
<input type="text" id="URL" name="URL" onkeyup="GetURL('URL');">
function GetURL(strFieldID) {
if (strFieldID=="Title"&&$('#URL').val()!="") {
//do nothing
}
else {
$.ajax({
url: "ajax_dataprovider_url.php",
type: "POST",
data: {URL: $('#'+strFieldID).val()},
async: false,
cache: false
}).done(function(strResponse) {
//output the formatted URL
document.getElementById("PageURL").value = strResponse;
});
}
}
答案 0 :(得分:0)
只需添加一个变量即可同时延迟停止发送。
var sending=false;
function GetURL(strFieldID) {
if (strFieldID=="Title"&&$('#URL').val()!="") {
//do nothing
}
else if (!sending) {
sending=true;
$.ajax({
url: "ajax_dataprovider_url.php",
type: "POST",
data: {URL: $('#'+strFieldID).val()},
async: false,
cache: false
}).done(function(strResponse) {
//output the formatted URL
sending=false;
document.getElementById("PageURL").value = strResponse;
});
}
}
答案 1 :(得分:0)
我要回答我自己的问题......
function GetURL(strFieldID) {
if (strFieldID=="Title"&&$('#URL').val()!="") {
//do nothing
}
else {
setTimeout(function(){
$.ajax({
url: "ajax_dataprovider_url.php",
type: "POST",
data: {URL: $('#'+strFieldID).val()},
async: false,
cache: false
}).done(function(strResponse) {
//output the formatted URL
document.getElementById("PageURL").value = strResponse;
});
}, 1000);
}
我告诉过你这很简单!