我有一个小提琴: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);
}
缺点是我(试图)在控件失去焦点时(或当下拉列表更改值时)为我想要运行的函数附加事件处理程序。
它的编写方式,它会在页面加载时触发,但在此之后再也不会。我以前做过这个,但也许只是因为它是周一但是......我在这里做错了什么?
答案 0 :(得分:4)
此代码
$('#Address').focusout(ValidateAddress($(this).val(), "address"));
调用 ValidateAddress
并将其返回值传递到focusout
,与foo(bar())
调用 bar
的方式完全相同将其返回值传递给foo
。
如果你想为focusout
提供一个功能,你必须这样做。例如:
$('#Address').focusout(function() {
ValidateAddress($(this).val(), "address");
});
该代码创建一个新的匿名函数,并将该函数引用传递给focusout
。当事件发生时,它将调用您的ValidateAddress
函数。