2012-04-16 79 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