帮助自定义jQuery验证功能

时间:2011-02-12 19:02:39

标签: javascript jquery

我有一个像这样的表单属性:

onsubmit="return valMyForm(this);"

这样的jQuery函数:

function valMyForm(f) {
  $(f,"input").each(function() {
      if($(this).length < 1) {
          alert("All Fields Required.");
          return false;
      }
          else
          return false;
  });
}

即使我删除了所有代码并只放了return false;

,表单仍然会提交

2 个答案:

答案 0 :(得分:3)

return false函数中的each正在退出每个循环。它没有返回valMyForm

的值

你应该使用类似有效变量的东西并返回:

function valMyForm(f) {
  var valid = true;
  $("input", f).each(function() {
      if($(this).val().length < 1) {
          alert("All Fields Required.");
          valid = false;
      }
  });

  return valid;
}

以下是您的工作示例:http://jsfiddle.net/adpMT/

答案 1 :(得分:1)

当您返回时,您位于.each函数内,因此您实际上并未从valMyForm方法返回任何内容。

我建议你避免使用javascript混合标记并不引人注意地执行此操作:

<form action="/foo" id="myform">
   ... some input fields
</form>

然后:

$(function() {
    $('#myform').submit(function() {
        // see if the form contains some empty inputs
        return $(this).find(':input[value=""]').length > 0;
    });
});