2009-12-14 27 views
4
$(document).ready(function() { 

    $('#commentForm').submit(function(){ 

     return $('input[type=text], textarea').each(function(index){ 

      if($(this).attr('value') == ""){ 
       alert(msgHash[$(this).attr('id')]); 
       return false; 

      }else{ 

       if(!$(this).attr('value').match(validateHash[$(this).attr('id')])){ 
        //Do nothing 
        alert(msgOnError[$(this).attr('id')]); 
        return false; 
       } 
      } 
     }); 

     return true; 
    }); 
}); 

這裏msgOnError,msgHash和msgHash是地圖,我用它來獲取信息具有特定ID 每個文本框中不幸的是每種方法不返回false就取消提交表單。我究竟做錯了什麼 ??我是jQuery的新手,謝謝jQuery的每個方法沒有返回值

回答

13

是的,這正是each的工作原理。由於它實際上是一個在每次迭代中調用匿名函數的循環,因此退出這些函數也不會退出調用函數。在這裏返回true和false,實際上對應於for循環的continuebreak

你會需要設置一個布爾標誌,則返回false(休息),然後each

+0

那是真正的大衛後返回布爾型標誌的價值。我通過在$('input [type = text],textarea')中設置一個布爾變量來獲得它的工作方式,並且還刪除了return關鍵字。稍後在$('#commentForm')中,我檢查了布爾值並決定是否應該提交表單。效果很好。 再次感謝大衛.. – nash 2009-12-14 11:41:58

+2

我很高興你有事情的工作。如果您對repsonse感到滿意,您可以勾選該答案的接受按鈕,將其標記爲接受的答案。這顯示其他用戶知道問題已經解決。 – 2009-12-14 12:12:56