focusout只会触发文档加载而永远不会再次触发?

时间:2015-01-26 18:40:26

标签: javascript jquery jquery-focusout

我有一个小提琴: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);
}

缺点是我(试图)在控件失去焦点时(或当下拉列表更改值时)为我想要运行的函数附加事件处理程序。

它的编写方式,它会在页面加载时触发,但在此之后再也不会。我以前做过这个,但也许只是因为它是周一但是......我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

此代码

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

调用 ValidateAddress并将其返回值传递到focusout,与foo(bar()) 调用 bar的方式完全相同将其返回值传递给foo

如果你想为focusout提供一个功能,你必须这样做。例如:

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

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