jquery-<input type=‘submit‘/>--关于required必填字段校验不生效的问题解决方案


问题描述

当时,我正在通过jquery的ajax来完成添加表单的提交操作,在提交前需要对表单进行一些简单的非空判断。于是,对提交按钮绑定了一个点击事件click来发起$.post请求。但是,在出现空字段的输入时,表单依旧被提交到后台服务器,显然结果并不是我想要的。
</>
我创建了一个注册表单并将其input字段设置为require属性,但它不适用于 ajax

<div class="form-group">
    <input required  type="text" id="First_name" placeholder="Enter your First Name" value="" class="form-control login-field">
    <i class="fa fa-user login-field-icon"></i>
</div>
<div class="form-group">
    <input required  type="text" id="last_name" placeholder="Enter your Last Name" value="" class="form-control login-field">
    <i class="fa fa-user login-field-icon"></i>
</div>
<div class="form-group">
    <input required  type="text" id="reg_username" placeholder="Enter your User Name    " value="" class="form-control login-field">
    <i class="fa fa-user login-field-icon"></i>
</div>
<div class="form-group">
    <input required  type="email" id="email" placeholder="Enter your Email" value="" class="form-control login-field">
    <i class="fa fa-user login-field-icon"></i>
</div>
<div class="form-group">
    <input required  type="password" id="password" placeholder="Password" value="" class="form-control login-field">
    <i class="fa fa-lock login-field-icon"></i>
</div>
<a id="register" class="btn btn-success modal-login-btn">Sign up</button>

这是ajax代码

<script type="text/javascript">
$(document).ready(function(){
    
    
  $("#register").click(function(e){
    
             
   if($("form").valid()){
    
    
      e.preventDefault();
   }
  var firstname=$('#First_name').val();
  var lastname=$('#last_name').val();
  var username=$('#reg_username').val();
  var password=$('#password').val();
  var email=$('#email').val();
  $.ajax({
    
    
    type: "POST",
    url: "doRegister.php",
    data: 
         "first_name=" +firstname+ "&last_name=" +lastname+ "&username="+ username+ "&password="+ password+ "&email="+ email ,
    success: function(html){
    
    
      document.write(html);
    }
  });
  return false;
});
});
</script>

原因分析:

由于click绑定的只是一个简单的点击事件,所以每次点击都会执行提交表单的操作,并没有按照表单中字段的校验结果来决定是否需要提交。


解决方案:

为了进行 html5 必填字段的验证需要使用submit事件而不是click。提交事件仅在成功验证后触发。

$(document).ready(function() {
    
    
  $("#register").submit(function(e) {
    
    
    //---------------^---------------
    e.preventDefault();
    var firstname = $('#First_name').val(),
      lastname = $('#last_name').val(),
      username = $('#reg_username').val(),
      password = $('#password').val(),
      email = $('#email').val();
    $.ajax({
    
    
      type: "POST",
      url: "doRegister.php",
      data: "first_name=" + firstname + "&last_name=" + lastname + "&username=" + username + "&password=" + password + "&email=" + email,
      success: function(html) {
    
    
        console.log(html);
      }
    });
    return false;

  });
});

猜你喜欢

转载自blog.csdn.net/weixin_48627356/article/details/125304352
今日推荐