1

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

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

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

4

1 回答 1

4

这段代码

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

调用 ValidateAddress并将其返回值传递给focusout,与foo(bar()) 调用 bar并将其返回值传递给foo.

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

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

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

于 2015-01-26T18:47:38.280 回答