在我的代码中我收到此错误
未捕获的TypeError:无法读取属性' toLowerCase'未定义的
但是当我删除
delay(function(){ ... }, 1000);
从我的源文件中我的代码完美运行我不知道我做错了什么或遗漏了一些非常重要的事情,这是我的完整代码
function checkurl(textname) {
$.ajax({
type: "POST",
url: "includes/modContent/checkurl.php",
data: "checkurl=" + textname,
dataType:'text', //or HTML, JSON, etc.
success: function(response){
//alert(response);
textname = response;
}
});
return textname;
}
$('input[name=txtPageName]').keyup(function() {
delay(function(){
$('input[name=txtSeoURL]').val(checkurl($(this).val()));
}, 1000);
});
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
答案 0 :(得分:3)
除其他外,当前的问题是,当您将回调传递给this
处理程序时,您正在更改setTimeout()
的范围。
要解决此问题,您需要反转逻辑,以便在AJAX完成时设置字段的val()
,而不是使用尝试从异步函数返回数据的复杂方法。试试这个:
var timeout;
$('input[name="txtPageName]"').keyup(function() {
clearTimeout(timeout);
var textname = $(this).val();
setTimeout(function() {
$.ajax({
type: "POST",
url: "includes/modContent/checkurl.php",
data: { checkurl: textname },
dataType: 'text',
success: function(response) {
$('input[name=txtSeoURL]').val(response.trim());
}
});
}, 250);
});