Validieren Formular-input-Feldern mit jquery

  1. Arbeite ich an der Validierung von Formularen. Alles ist in Ordnung, was ich eigentlich möchte ist, ich möchte hinzufügen, einige weitere Eingabefelder wie checkbox, radio button, select und textarea, Datei hochladen und wie so in der form ich will, dass Sie überprüft werden, wie gut.

  2. Bekam ich die E-Mail-Eingang Fehler funktioniert, aber es funktioniert nicht richtig wie es sollte, überprüfen Sie die E-Mail zuerst und dann sollte es entfernen Sie die Fehlermeldung, sondern es ist das entfernen der Fehlermeldung direkt nach Eingabe von wenigen Zeichen.

  3. Ich will, dass die Telefonnummer validiert werden soll. Wie sollte der Benutzer geben Sie 10 Ziffern, die in Indien, wenn in einem anderen Land, das unterscheiden, ich bin ein wenig verwirrt, wie es zu tun.

  4. Möchte ich eine Erfolgsmeldung, um pop-up, wenn alle Felder korrekt überprüft werden, wie Sie sollten. was ich versucht habe, ist dies:

    $('.success_msg').fadeIn().delay(3000).fadeOut();
    $('input , textarea , select').val('').removeClass('valid');
    event.preventDefault();
  5. Möchte ich alle Felder gelöscht werden, wenn alle Validierungen durchgeführt werden, und die Erfolg-Nachricht gesendet wird.

Kann jemand mich in die richtige Richtung?

JS:

var Validator = function(formObject) {
  this.form = $(formObject);

  var Elements = {
    name: {
      reg: /^[a-zA-Z]{2,20}$/,
      error: "Not a valid name.",
    },

    email: {
      reg: /^[a-z-0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,7}$/i,
      error: "Not a valid e-mail address.",
    },
    phone: {
      reg: /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/,
      error: "Not a valid number.",
    },

    message: {
      reg: /^(?!\s*$).+/,
      error: "Message field cannot be empty.",
    },
  };

  var handleError = function(element, message) {
    element.addClass('input-error');
    var $err_msg = element.parent('div');
    $err_msg.find('.error').remove();
    var error = $('<div class="error"></div>').text(message);
    error.appendTo($err_msg);
    element.keyup(function() {
      $(error).fadeOut(1000, function() {
        element.removeClass('input-error');
      });
    });

  };

  this.validate = function() {
    var errorCount = 0;
    this.form.find("input, textarea").each(function(index, field) {
      var type = $(field).data("validation");
      var validation = Elements[type];
      if (validation) {
        if (!validation.reg.test($(field).val())) {
          errorCount++;
          handleError($(field), validation.error);
        }
      }
    })
    return errorCount == 0;
  };
};

$(function() {
  $("form#test").on("submit", function(event) {
    //event.preventDefault();
    return new Validator(this).validate(); //"this" here refers to the form

  })
})

CSS:

body {
  background: #fff;
  color: #333;
  font: 76% Verdana, sans-serif;
}

form {
  margin: 1em 0 0 2em;
  width: 90%;
}

fieldset {
  margin: 0;
  border: 1px solid #ccc;
  padding-bottom: 1em;
}

legend {
  font-weight: bold;
  text-transform: uppercase;
}

label {
  float: left;
  width: 5em;
  padding-right: 2em;
  font-weight: bold;
}

div {
  margin-bottom: 30px;
}

input {
  font: 1em Verdana, sans-serif;
}

fieldset ul li input {
  float: left;
  width: 120px;
  border: 1px solid #ccc;
}

textarea {
  width: 300px;
  height: 200px;
  border: 1px solid #ccc;
  font: 1em Verdana, sans-serif;
}

form p {
  margin: 0;
  padding: 0.4em 0 0 7em;
}

form p input {
  background: #666;
  color: #fff;
  font-weight: bold;
}

div.error {
  clear: left;
  margin-left: 5.3em;
  color: red;
  padding-right: 1.3em;
  height: 100%;
  padding-bottom: 0.3em;
  line-height: 1.3;
}

.input-error {
  background: #ff9;
  border: 1px solid red;
}

.success_msg {
  width: 350px;
  line-height: 40px;
  border: 1px solid green;
  border-radius: 5px;
  background-color: rgba(213, 255, 187, 0.7);
  display: none;
  position: absolute;
  bottom: 5px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 999;
  text-align: center;
}

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" method="post" id="test">

  <fieldset>

    <legend>Contact information</legend>


    <div>
      <label for="firstname">Firstname:</label>
      <input type="text" name="firstname" id="firstname" data-validation="name" />
    </div>


    <div>
      <label for="lastname">Lastname:</label>
      <input type="text" name="lastname" id="lastname" data-validation="name" />
    </div>

    <div>
      <label for="email">Email:</label>
      <input type="email" name="email" id="email" data-validation="email" />

    </div>
    <div>
      <label for="phone">phone</label>
      <input type="number" name="phone" id="phone" data-validation="phone" />
    </div>

    <div>
      <label>Gender:</label>
      <input type="radio" name="gender" value="male" data-validation="gender" />
      <input type="radio" name="gender" value="female" data-validation="gender">
    </div>

    <div>
      <label>select</label>
      <input type="checkbox" name="checkbox" id="checkbox1" value="demo1" data-validation="checkbox" />
      <input type="checkbox" name="checkbox" id="checkbox2" value="demo2" data-validation="checkbox" />
      <input type="checkbox" name="checkbox" id="checkbox3" value="demo3" ata-validation="checkbox" />
    </div>

    <select data-validation="selectOption">
      <option value="">Select any option</option>
      <option value="red">Red</option>
      <option value="blue">Blue</option>
      <option value="green">Green</option>
    </select>

    <div>
      <label>Upload:</label>
      <input type="file" name="file" id="file" data-validation="file" />
    </div>

    <div>
      <label for="message">Message:</label>
      <textarea id="message" name="message" cols="30" rows="15" data-validation="message"></textarea>
    </div>

    <p><input type="submit" name="send" id="send" value="Send" /></p>

  </fieldset>
  <div class="success_msg">
    <p>Form submitted Successfully</p>
  </div>
</form>

Bitte fühlen Sie sich frei, um Ihre Zweifel deaktivieren, bevor Sie Ihre Zeit investieren um die Beantwortung der Frage.

  • ändern Sie einfach-Selektor Selektor: $('#name'),
  • Ich will nicht mit Id ' s möchte ich das Formular zu validieren, alle text-Eingabe-Felder alle auf einmal unabhängig davon, wie viele Sie sind.
  • vorbei sind die Tage zu setzen js-code für die Validierung .. u können versuchen, diese Bibliothek selbst - jquery-form-validator - formvalidator.net . Seine einfache und gerade vorwärts.
  • Das ist kein Duplikat, keine zwei Formen sind die gleichen. Ich möchte das mein Formular überprüft werden, indem auf unterschiedliche Weise.
  • Es sei denn, Sie tun dies nur um zu lernen, wie es selbst zu tun, würde ich empfehlen, jqueryvalidation.org. Es ist wirklich einfach zu bedienen und es gibt keinen Grund zu schaffen, mehr für sich selbst arbeiten an einem Projekt, wenn andere dieses problem gelöst haben bereits.
  • Vielen Dank, ich möchte, um die form der Gewohnheit. Ich denke, dass könnte getan werden, in einer einfachen Weise, aber ich habe ein wenig wissen in so und niemand hat Zeit hier. So, das wird tun.

Schreibe einen Kommentar