focusout 仅在文档​​加载时触发,再也不会触发?

focusout only fires on document load and never again?

我有一个 fiddle 给你:http://jsfiddle.net/pneebntd/3/

$(document).ready(function(){    
    $('#Address').focusout(ValidateAddress($(this).val(), "address"));
    $('#City').focusout(ValidateAddress($(this).val(), "city"));
    $('#State').focusout(ValidateAddress($(this).val(), "state"));
    $('#Zipcode').focusout(ValidateAddress($(this).val(), "zip/postal code"));
    $("#StateList").change(ValidateAddress($(this).val(), "state"));
});

function ValidateAddress(location, label) {
     console.info("made it there : " + location + " " + label);
}

简而言之,当控件失去焦点(或下拉菜单更改值)时,我(尝试)为我想要 运行 的函数附加事件处理程序。

按照它的编写方式,它会在页面加载时触发,但之后不会再触发。我以前做过,但也许只是因为今天是星期一,但是...我做错了什么?

这个代码

$('#Address').focusout(ValidateAddress($(this).val(), "address"));

调用 ValidateAddress 并将其 return 值传递给 focusout,完全按照 foo(bar()) 的方式调用 bar 并将其 return 值传递给 foo.

如果你想给 focusout 一个函数,你必须这样做。例如:

$('#Address').focusout(function() {
    ValidateAddress($(this).val(), "address");
});

该代码创建了一个新的匿名函数并将该函数引用传递给 focusout。当事件发生时,它将调用您的 ValidateAddress 函数。