Javascript Jquery函数在页面加载后只执行一次

Javascript Jquery函数在页面加载后只执行一次,javascript,jquery,Javascript,Jquery,如下所示:我想在用户完成键入(等待2秒)后触发函数doneTyping(),但它只有在我第一次加载页面或点击刷新后才会触发。如果我多次更改textbox ResidentialZipCode中的内容,它根本不起作用 $(document).ready(function () { var typingTimer; //timer identifier var doneTypingInterval = 2000; //on keyup, start the countdown

如下所示:我想在用户完成键入(等待2秒)后触发函数
doneTyping()
,但它只有在我第一次加载页面或点击刷新后才会触发。如果我多次更改textbox ResidentialZipCode中的内容,它根本不起作用

$(document).ready(function () {
    var typingTimer; //timer identifier
    var doneTypingInterval = 2000;
    //on keyup, start the countdown
    function checkForChange() {
        debugger;
        clearTimeout(typingTimer);
        if ($('#Residential_txt').val) {
            typingTimer = setTimeout(doneTyping, doneTypingInterval);
        }
    }
    function doneTyping() {
        //do something
    }
    $("#Residential_txt").on('input change paste cut', checkForChange);
}

有什么需要纠正的吗

val
是一个函数,而不是属性。所以试着改变

if ($('#ResidentialZipCode_txt').val) {


#.val()
方法,而不是属性还应修复此问题,因为未定义的属性
#。val
将返回“未定义”,从而使if语句失败为false。提示:在
jQuery文档就绪处理程序
之外声明
checkForChange()
doneTyping()
函数。您有小提琴要测试吗?@kodleyin谢谢,但问题依然存在!您正在使用id
ResidentialZipCode\u txt
处理元素上的事件,并且您的函数正在测试另一个元素,id
ResidentialZipCode\u txt
。这是正确的还是仅仅是一个打字错误?或者您实际上有多个
输入
,并且想要检查所有输入?在OP的代码中,他没有将
val
用作函数,因此您所说的不是真的。此外,如果值为空或null,则函数不会是“truthy”。@Nicholas
$(“…”)。val
将返回(不调用)函数本身。功能是真实的。
if ($('#ResidentialZipCode_txt').val()) {