Jquery 如果存在错误,则阻止表单提交ajax.submit()和.change()

Jquery 如果存在错误,则阻止表单提交ajax.submit()和.change(),jquery,ajax,validation,submit,Jquery,Ajax,Validation,Submit,所以我对jQuery/ajax代码有这个问题。每当字段更改时,我都使用了.change方法。它显示该电子邮件是否已被接收或输入字段为空的输出。我知道有.submit方法和preventDefault(),但我对这一点不太熟悉,我不知道如何使用.change和同时提交 pic1 = new Image(20, 20); pic1.src="images/abc.jpg"; $(document).ready(function(){

所以我对jQuery/ajax代码有这个问题。每当字段更改时,我都使用了
.change
方法。它显示该电子邮件是否已被接收或输入字段为空的输出。我知道有
.submit
方法和
preventDefault()
,但我对这一点不太熟悉,我不知道如何使用
.change
同时提交

          pic1 = new Image(20, 20);
          pic1.src="images/abc.jpg";
          $(document).ready(function(){

          function isValidEmail(emailAddress) {
             // some regular expressions for email  format validation

      };
            $("#email").change(function() {
            var email = $("#email").val();
            if(isValidEmail(email)){

                $("#status").html('<img 
        style="width:17px;"src="images/abc.jpg" align="absmiddle">&nbsp;Checking availability...');

                $.ajax({ 

                type: "POST", 
                url: "check.php", 
                data: "email="+ email,
                dataType: 'text',

                    success: function(msg){

                        if(msg == 'OK'){
                         //alert ("success");
                $("#email").removeClass('object_error'); // if necessary
                $("#email").addClass("object_ok");
                $("#status").html('&nbsp;<img src="tick2.gif" 
               align="left"><p><strong style="color:green">This email is available</strong></p>');

            } else {
                //alert ("error");
               $("#email").removeClass('object_ok'); // if necessary
               $("#email").addClass("object_error");
               $("#status").html(msg);
           }
        }

    });

    } else {
      $("#status").html('<font color="red">' + 'Enter Valid 
     Email</font>');
     $("#email").removeClass('object_ok'); // if necessary
     $("#email").addClass("object_error");
   }
  });
 });
pic1=新图像(20,20);
pic1.src=“images/abc.jpg”;
$(文档).ready(函数(){
函数isValidEmail(电子邮件地址){
//用于电子邮件格式验证的一些正则表达式
};
$(“#电子邮件”).change(函数(){
var email=$(“#email”).val();
如果(iValidEmail(电子邮件)){
$(“#状态”).html(‘检查可用性…’);
$.ajax({
类型:“POST”,
url:“check.php”,
数据:“email=”+email,
数据类型:“文本”,
成功:功能(msg){
如果(msg=='OK'){
//警惕(“成功”);
$(“#email”).removeClass('object#error');//如有必要
$(“#email”).addClass(“object#ok”);
$(“#status”).html(“此电子邮件可用””;
}否则{
//警报(“错误”);
$(“#email”).removeClass('object#ok');//如有必要
$(“电子邮件”).addClass(“对象错误”);
$(“#status”).html(msg);
}
}
});
}否则{
$(“#状态”).html(“”+”输入有效
电邮);;
$(“#email”).removeClass('object#ok');//如有必要
$(“电子邮件”).addClass(“对象错误”);
}
});
});
它们都是事件,但是 对于更改和提交,他们的行为不同。
它们不会同时触发

          pic1 = new Image(20, 20);
          pic1.src="images/abc.jpg";
          $(document).ready(function(){

          function isValidEmail(emailAddress) {
             // some regular expressions for email  format validation

      };
            $("#email").change(function() {
            var email = $("#email").val();
            if(isValidEmail(email)){

                $("#status").html('<img 
        style="width:17px;"src="images/abc.jpg" align="absmiddle">&nbsp;Checking availability...');

                $.ajax({ 

                type: "POST", 
                url: "check.php", 
                data: "email="+ email,
                dataType: 'text',

                    success: function(msg){

                        if(msg == 'OK'){
                         //alert ("success");
                $("#email").removeClass('object_error'); // if necessary
                $("#email").addClass("object_ok");
                $("#status").html('&nbsp;<img src="tick2.gif" 
               align="left"><p><strong style="color:green">This email is available</strong></p>');

            } else {
                //alert ("error");
               $("#email").removeClass('object_ok'); // if necessary
               $("#email").addClass("object_error");
               $("#status").html(msg);
           }
        }

    });

    } else {
      $("#status").html('<font color="red">' + 'Enter Valid 
     Email</font>');
     $("#email").removeClass('object_ok'); // if necessary
     $("#email").addClass("object_error");
   }
  });
 });
对于提交,当用户试图提交表单时,它是元素的事件。
对于更改,当元素值更改时,它是一个事件触发器

资料来源:
1。
2

如果要停止默认行为,可以在更改事件期间检查添加的类(object_error)类

$("form").on('submit', function (e) {
    if($('.object_error').length > 0){
         e.preventDefault();  
         return false;
    }
}

您似乎有一些代码来检查电子邮件是否可用。这是更改ajax调用。假设您有一个提交电子邮件的按钮,它们没有理由冲突,或者,正如您所说,“使用
。更改
。同时提交
”。您不需要同时使用它们,而是使用change进行检查,然后使用submit进行提交(或者如果您想要ajax提交,请单击按钮)。您的意思是在change事件块中,例如
$(“#email”)。change(function(){$(“registerCompany”)。on('submit',function(e){if($('.object_error').length>0{e.preventDefault();return false;}
@ZeeshanAli您可以在分号后面的更改事件下放置。$(“#email”).change(function(){//statement});$(“form”).on('submit',function(e){//statement});它们都是不同的事件。一个是当您在电子邮件字段中键入任何内容时触发,当您按下submit按钮时触发submit事件。如果存在错误,则阻止表单提交,但当我们更正这些错误时,它不是解除绑定的submit按钮。我使用了类似
$(“registerCompany”)的代码。on('submit',函数(e){if($('.object_error').length>0{e.preventDefault();返回false;}else{$(this.unbind('submit').submit();})
但它不起作用为什么要解除提交事件的绑定?应该删除object\u error类,因此如果在表单中找不到object\u error类。它将继续提交i输入不正确的数据代码阻止我提交表单,但在我用正确的数据更新后,它仍然不允许我提交表单..i使用unbind只是为了尝试,但它也不起作用