Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Required fields are not working with ajax

I have created a Registration Form and set its input field to require attribute but its not working with 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>

and here is ajax code

<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>

i just want to run required field validation with ajax i could not find any solution .

like image 959
Bilal Maqsood Avatar asked Aug 07 '15 11:08

Bilal Maqsood


People also ask

Is jquery required for Ajax?

On the client side, including jQuery is all you need to do to make ajax requests. If its not working, there is something wrong with either the way your server is configured or with the php script. See if your server is throwing any errors and go from there.


2 Answers

You need to use submit event instead of click in order to work the html5 validation. Submit event only fire after successfully validated.

$(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;

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="" method="POST" id="register" role="form">
  <!---                       ---^----             ------>
  <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>
  <button type="submit" class="btn btn-success modal-login-btn">Sign up</button>
</form>
like image 100
Pranav C Balan Avatar answered Oct 06 '22 01:10

Pranav C Balan


If your form is invalid, you need to return out the function - e.preventDefault() is not enough to stop your ajax being executed

if($("form").valid()){
  e.preventDefault();
  return; // <-- here
}
like image 33
Jamiec Avatar answered Oct 06 '22 01:10

Jamiec