2012-04-16 58 views
1

我知道這是一個簡單的問題,但是您是否都可以使用以下代碼來幫助我?我做了這個函數來檢查必填字段是否填寫在表單中。如果發現其中一個輸入爲空,則應停止並返回false。如果所有元素都有內容,則它應該返回true。以下功能不起作用,因爲我的return false;行位於jQuery .each函數內。它沒有返回我定義的新函數。我該如何處理?驗證表格填寫完畢,HTML jQuery

function check_form(){ 
    $('form .required').each(function(){ 
     if ($(this).val() == ""){ 
      show_dialog('Please enter a value for ' + $(this).attr('name')); 
      return false; 
     } 
    }); 

    return true; 
} 

即使某些必填字段爲空,此函數每次都會返回true。

問題在這個小提琴描述:http://jsfiddle.net/f59t4/2/

它現在,謝謝大家!

+0

1)你是否想要所有未填充字段的所有錯誤消息被顯示在你的對話框中,2)是否只填空白? – karim79 2012-04-16 15:21:27

+1

查看http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – Sparky 2012-04-16 15:22:38

+1

查看http://jsfiddle.net/TdnZp/16/ ..其作品爲文本輸入 – 2012-04-16 15:29:02

回答

4

試試這個

function check_form(){ 
    var flag = true; 
    $('form .required').each(function(){ 
     if ($(this).val() == ""){ 
      show_dialog('Please enter a value for ' + $(this).attr('name')); 
      flag = false; 
     } 
    }); 

    return flag; 
} 
+0

好酷,這裏是一個小提琴:http://jsfiddle.net/f59t4/1/。現在,第一個錯誤發生後,我怎麼才能離開'.each()'函數呢? – 2012-04-16 15:25:39

+0

明白了:http://gavinroy.com/jquery-tip-how-to-break-out-of-each ...返回false。謝謝! – 2012-04-16 15:29:03

1

假設:

1)你想的所有問題驗證總結,

2)你不想包含所有空格場被算作有效,那麼:

function checkform() { 
    var errors = ""; 
    var $blankFields = $('form .required').filter(function() { 
     return $.trim($(this).val()) === ""; 
    }); 
    if ($blankFields.length) { 
     $blankFields.each(function() { 
      errors += "Please enter a value for " + $(this).attr('name') + "<br />"; 
     }); 
     show_dialog(errors); 
     return false; 
    } 
    return true; 
} 
+0

感謝您的想法。是的,我不希望允許空格,但我只是想遇到的第一個錯誤顯示出來。並非所有的錯誤在一起,儘管我可以看到在某些情況下這會有用。 – 2012-04-16 15:31:58