我有这个功能来检查我的表格:
function checkFrm() {
$.each($('select'), function() {
var $this = $(this);
if( $this.val() === 'null') {
// do nothing
} else {
if($this.next('input').val().length < 1) {
return false;
}
}
});
}
当用户提交此代码时,它会运行此代码,理想情况下,如果符合条件,则表单将因“返回false”而无法提交位。
然而,出于某种原因,它完全无视这一点!
如果我在开头设置一个返回变量,就像'var toreturn = true;'然后在触发器被触发时设置'toreturn = false',然后'return toreturn;'最后它会停止表单提交正常...但是这并没有多大用处,因为我之间运行的警报和检查都会立即被触发,这对用户来说是完全无法控制的。
有什么建议吗?
干杯:)
答案 0 :(得分:13)
从每个函数返回false将不会从函数返回false。
您还需要设置var以从函数返回false。一旦条件失败,你仍然可以通过使用return false来突破每一个。
function checkFrm() {
var retVal=true;
$.each($('select'), function() {
var $this = $(this);
if( $this.val() === 'null') {
// do nothing
} else {
if($this.next('input').val().length < 1) {
//set the var to return from the function
retval = false;
//exit out of the each
return false;
}
}
});
return retVal;
}
答案 1 :(得分:1)
当你致电return false时;它为函数重新伪造
function() {
var $this = $(this);
if( $this.val() === 'null') {
// do nothing
} else {
if($this.next('input').val().length < 1) {
return false;
}
}
}
这对你不起作用。 你最好得到一系列的选择:
var selectsArray=document.getElementsByTagName("select");
并在循环中与他们合作。
for(var i=0; i< selectsArray.length;i++){
if( selectsArray[i].value === 'null') {
// do nothing
} else {
if(selectsArray[i].next('input').val().length < 1) {
return false;
}
}
}