0

I have this form with input text

But when I submit it, only the 1st field (Name 1) will be validated, not the other 2.

How can I validate all 3 fields as required with same input name?

When clicking the submit button, console log should say "all fields are valid" if they are all filled up.

Here's the fiddle. https://jsfiddle.net/o9qrdgch/4/

$(function() {
  var rules = [];
  var messages = [];
  rules['names[]'] = {
    'required': true
  };
  messages['names[]'] = {
    'required': 'This name field is required.'
  };
  $(".form-names").validate({
    ignore: '',
    rules: rules,
    messages: messages,
    onkeyup: function(element) {
      $(element).valid();
    },
    onclick: function(element) {
      $(element).valid();
    },
    onfocusout: function(element) {
      $(element).valid();
    },
    invalidHandler: function(event, validator) {
      var errors = validator.numberOfInvalids();
      if (errors) {
        validator.errorList[0].element.focus();
      }
    },
    errorPlacement: function(error, element) {
      error.insertAfter(element);
    },
    submitHandler: function(form) {
      console.log('all fields are valid')
      // form.submit();
    }
  });
});
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"></script>

<form class="form-names">
  <div class="form-group">
    <label>Name 1</label>
    <input type="text" class="form-control" name="names[]" placeholder="Enter name">
  </div>
  <div class="form-group">
    <label>Name 2</label>
    <input type="text" class="form-control" name="names[]" placeholder="Enter name">
  </div>
  <div class="form-group">
    <label>Name 3</label>
    <input type="text" class="form-control" name="names[]" placeholder="Enter name">
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>
Sparky
  • 98,165
  • 25
  • 199
  • 285
Codeblooded Saiyan
  • 1,457
  • 4
  • 28
  • 54

0 Answers0