2013-10-26 37 views
2

我有一個表單提交事件處理程序,在其中我有一個.each函數,我想返回false爲其父(form.submit),以防止表單提交。我無法弄清楚如何去做。從子函數返回父函數的值

$("#form").submit(function() { 
$(selector).each (function() { if ($(this).val() === ""}) {return false;}); 
}); 

回答

1

將狀態存儲在變量中,並在.each()

$("#form").submit(function() { 
    var correctForm = true; 
    $(selector).each(function() { 
     if (this.value === '') correctForm = false; 
    }); 
    return correctForm; 
}); 
後返回

您也可以使用輸入元素,而不是創建jQuery對象和使用.val()

+0

會不會有超過.VAL使用.value的好處()?如速度? – Ralph

+0

是的,因爲你已經有了對DOM的引用,並且'value'是該元素的一個屬性,所以直接訪問它比調用兩個函數更快(*一個用於創建jQuery對象,那麼'.val()'得到的值是*) –

+0

感謝那些信息。我很感激。 – Ralph

0

你不能從內部函數直接返回一個值,而不是你可以使用一個變量來做到像

$("#form").submit(function() { 
    var valid = true; 
    $(selector).each(function() { 
     if ($(this).val() === "") { 
      valid = false; 
      return false; 
     } 
    }); 
    return valid ; 
}); 
1

原始事件對象上使用的preventDefault嘗試

$("#form").submit(function (event) { 
    $(selector).each(function() { 
     if ($(this).val() === ""){ 
      event.preventDefault(); 
     } 
    }); 
}); 
0

.value財產嘗試

$("#form").submit(function() { 
$(selector).each (function() { if ($(this).val() === ""){} 
     return false; 
}); 
});