我有这样的代码:
$("button[value^='SAVEALL']").live("click",function(){
rowCheck(1);
rowCheck(2);
columnCheck(A);
columnCheck(B);
alert("all function passed");
});
function rowCheck(x){
if (x>10){
return false;
}
}
function columnCheck(a){
if (a=="A"){
return false;
}
}
上面的代码,它只运行第一个函数,然后直接提交表单。
如何确保它运行所有函数并在表单返回true
后提交表单。
答案 0 :(得分:1)
首先,你需要你的函数来返回true或false 喜欢
function rowCheck(x){
if (x>10){
return false;
}
return true;
}
function columnCheck(a){
if (a=="A"){
return false;
}
return true;
}
然后更改您的代码以点击
$("button[value^='SAVEALL']").live("click", function(){
if(rowCheck(1) && rowCheck(2) && columnCheck(A) && columnCheck(B))
{
return true;
}
return false;
//alert("all function pass");
});
答案 1 :(得分:0)
...试
$("button[value^='SAVEALL']").live("click",function(e){
e.preventDefault();
rowCheck(1);
rowCheck(2);
columnCheck(A);
columnCheck(B);
alert("all function pass");
});
答案 2 :(得分:0)
您没有正确使用该活动。这就是我要做的事情:
$("button[value^='SAVEALL']").live("click",function(event){
if( rowCheck(1) || rowCheck(2) || columnCheck(A) || columnCheck(B) ) {
event.preventDefault();
}
});
function rowCheck(x){
return (x>10);
}
function columnCheck(a){
return (a=="A");
}
主要变化:
true
,而不是相反。false
,这是一段难以理解的代码,只需使用event.preventDefault();
即可。更清洁,更可读。请注意,我必须将function() {
更改为function(event) {
!!点击事件由浏览器传递,阻止它发生比使用返回false
的过时技术要好得多。if(some_boolean) { return true; }
等代码块。这是一个坏习惯,并没有丝毫增加可读性。 这是因为:
if ( name=="John" && lastname =="Smith") {
return true;
} else {
return false;
}
始终可以改写为:
return ( name=="John" && lastname =="Smith");