Javascript 无法理解此验证为何无法按预期工作

Javascript 无法理解此验证为何无法按预期工作,javascript,jquery,Javascript,Jquery,我的问题是我想用javascript面向对象的方式验证我的表单,但我无法让它工作 HTML:------------------------------------------------------------------------------------------------------ JS&JQUERY:-------------------------------------------------------------------------------

我的问题是我想用javascript面向对象的方式验证我的表单,但我无法让它工作

HTML:------------------------------------------------------------------------------------------------------

JS&JQUERY:---------------------------------------------------------------------------------------------
var formValidate={
验证:功能(elem){
var frm=元素属性('id');
$('.required','#'+frm).each(function(){
if($(this.val()=''){
警报($(this).attr('id')+'是必填字段。“);//使用
e.preventDefault()

使用
e.preventDefault()

一个有效的例子:

工作示例:

您需要在
submit
处理程序中返回验证标志

$(function () {
    $('form').submit(function () {
        return formValidate.validate($('form'));
    });
});
另外,您的return语句只是中断了
每个
函数,而不是从
验证
方法返回

validate: function (elem) {
    var isValid = true;
    var frm = elem.attr('id');
    $('.required', '#' + frm).each(function () {
        if ($(this).val() === '' && isValid) {
            alert($(this).attr('id') + ' is a required field.');
            $(this).focus();
            isValid = false;
            return false;
        }
    });
    return isValid;
}
您可以稍微简化验证功能:

您需要在
submit
处理程序中返回验证标志

$(function () {
    $('form').submit(function () {
        return formValidate.validate($('form'));
    });
});
另外,您的return语句只是中断了
每个
函数,而不是从
验证
方法返回

validate: function (elem) {
    var isValid = true;
    var frm = elem.attr('id');
    $('.required', '#' + frm).each(function () {
        if ($(this).val() === '' && isValid) {
            alert($(this).attr('id') + ' is a required field.');
            $(this).focus();
            isValid = false;
            return false;
        }
    });
    return isValid;
}
您可以稍微简化验证功能:


@GrantThomas当我提交表单
时,它得到验证但不返回false
@GrantThomas当我提交表单
时,它得到验证但不返回false
。谢谢Dipesh,但我没有使用ajax,所以我想这里不需要“防止默认值”。@Jai所以你只想在验证失败时停止验证,不让表单重定向s、 .对。?谢谢Dipesh,但我没有使用ajax,所以我想这里不需要使用默认值。@Jai所以如果验证失败,您只想停止对not let form redirect的验证。.对。?再等待2分钟@Dipesh always do。再等待2分钟@Dipesh always do。
 var formValidate = {
      validate: function(elem) {
          var frm = elem.attr('id');

          var invalid = 0;
           $('.required', '#' + frm).each(function() {
                if ($(this).val() === '') {
                     alert($(this).attr('id') + ' is a required field.');
                     $(this).focus();

                     invalid++;

                     return false; // <- affects "each", therefore stopping the loop
                }
           });

          // add these, to also return value from function
          if (invalid > 0) return false;

          return true;
      }
 };
 $(function() {
     $('form').submit(function() {
           return formValidate.validate( $(this) ); // you must pass the returned value to your submit callback
     });
 });
$(function () {
    $('form').submit(function () {
        return formValidate.validate($('form'));
    });
});
validate: function (elem) {
    var isValid = true;
    var frm = elem.attr('id');
    $('.required', '#' + frm).each(function () {
        if ($(this).val() === '' && isValid) {
            alert($(this).attr('id') + ' is a required field.');
            $(this).focus();
            isValid = false;
            return false;
        }
    });
    return isValid;
}
validate: function (elem) {
    var isValid = true;
    $('.required', elem).each(function () {
        var $this = $(this);
        if ($this.val() === '' && isValid) {
            alert($this.attr('placeholder') + ' is a required field.');
            $this.focus();
            isValid = false;
            return false;
        }
    });
    return isValid;
}