jQuery-Formularvalidierung beim Klicken auf die Schaltfläche

Lesezeit: 4 Minuten

jQuery Formularvalidierung beim Klicken auf die Schaltflache
ajithmanmu

Ich habe eine einfache Seite mit einem Formular und einer Schaltfläche außerhalb des Formulars. Ich versuche, das Formular auf dem Button-Klick zu validieren. Ich habe die Regeln für die Validierung des Formulars in der Funktion document.onready hinzugefügt. Das Formular wird jedoch nicht validiert.

HTML:-

<html>
<head>
   <script src="https://stackoverflow.com/questions/13671710/lib/jquery1.5.2.js"></script>
   <script src="lib/jquery.validate.js"></script>
   <script src="lib/myjs.js"></script>
</head>
<body>

<form id="form1" name="form1"> 
     Field 1: <input id="field1" type="text" class="required">
</form>

<div>
    <input id="btn" type="button" value="Validate">
</div>

</body>
</html>

JS:-

$(document).ready(function(){

$("#form1").validate({
   rules: {
     field1: "required"
   },
   messages: {
     field1: "Please specify your name"

   }
})

$('#btn').click(function() {
 $("#form1").validate();  // This is not working and is not validating the form
});

});

Irgendeine Idee, was falsch ist?

  • Erhalten Sie einen JavaScript-Fehler?

    – Explosionspillen

    2. Dezember 12 um 17:23 Uhr

  • Welches Plugin verwendest du für die Validierung?

    – SwiftD

    02.12.12 um 17:26 Uhr

  • Ich verwende jquery 1.5.2.js und jquery.validate.js

    – ajithmanmu

    2. Dezember 12 um 17:27 Uhr

  • An die Kommentatoren: .validate() innerhalb der click Handler funktioniert nicht, weil er nur das Plugin neu initialisiert. Benutzen .valid() Validierung zu erzwingen.

    – Funkelnd

    02.12.12 um 17:45 Uhr

jQuery Formularvalidierung beim Klicken auf die Schaltflache
Funkelnd

In deinem click Handler, der Fehler ist der .validate() Methode; es initialisiert nur das Plugin, es validiert es nicht form.

Um die Notwendigkeit zu beseitigen, a submit Schaltfläche innerhalb der form, benutzen .valid() um eine Validierungsprüfung auszulösen…

$('#btn').on('click', function() {
    $("#form1").valid();
});

jsFiddle-Demo

.validate() – um das Plugin zu initialisieren (mit Optionen) Einmal auf DOM bereit.

.valid() – Überprüfung des Validierungsstatus (boolescher Wert) oder Auslösen eines Validierungstests auf dem form jederzeit.

Ansonsten, wenn Sie a type="submit" Schaltfläche innerhalb der form Behälter, Sie bräuchten kein spezielles click Handler und die .valid() Methode, da das Plugin das automatisch erfassen würde.

Demo ohne click Handler


BEARBEITEN:

Sie haben auch zwei Probleme in Ihrem HTML …

<input id="field1" type="text" class="required">
  • Du brauchst nicht class="required" beim Deklarieren von Regeln innerhalb .validate(). Es ist überflüssig und überflüssig.

  • Der name Attribut fehlt. Darin werden Regeln deklariert .validate() durch ihre name. Das Plugin hängt von unique ab name Attribute, um die Eingaben zu verfolgen.

Sollte sein…

<input name="field1" id="field1" type="text" />

  • Ich habe Ihre Antwort bearbeitet, damit sie für eine andere Art von Formularstruktur funktioniert. stackoverflow.com/a/28723145/2615737

    – Francisco Corrales Morales

    25. Februar 15 um 15:39 Uhr

  • Ich finde es ironisch, dass Sie sowohl überflüssig als auch überflüssig sagen.

    – Louise Eggleton

    15. Juni 15 um 9:17 Uhr

  • Hat wunderbar funktioniert, vielen Dank @Sparky

    – Prasad Patel

    19. April 17 um 5:44 Uhr

  • Anstatt class="required"Ich verwende das Attribut <input name="field1" id="field1" type="text" required /> Dadurch wird automatisch das Validierungsskript eingegeben

    – ArtFranco

    23. Juli 19 um 14:41 Uhr

  • @ArtFranco, mit diesem Plugin können Sie Regeln nach Klasse oder nach HTML5-Attributen deklarieren. Unabhängig davon müssen Sie den Punkt der Antwort verpasst haben … dass keine Inline-Attribute benötigt werden, wenn die Regeln darin definiert sind .validate().

    – Funkelnd

    23. Juli 19 um 14:44 Uhr

1643912466 90 jQuery Formularvalidierung beim Klicken auf die Schaltflache
Wap

$(document).ready(function() {
    $("#form1").validate({
        rules: {
            field1: "required"
        },
        messages: {
            field1: "Please specify your name"
        }
    })
});

<form id="form1" name="form1">
     Field 1: <input id="field1" type="text" class="required">
    <input id="btn" type="submit" value="Validate">
</form>

Sie verwenden auch type=”button”. Und ich bin mir nicht sicher, warum Sie die Schaltfläche “Senden” trennen und in das Formular einfügen sollten. Es ist richtiger, es so zu machen. Das sollte funktionieren.

  • Wahr. Aber könnte ich wenigstens meine Stimme zurückbekommen? Haha Nur ein trivialer Fehler und ein Versehen meinerseits. ;p …Ich habe nie gesagt, dass es falsch ist, ich habe nur gesagt, dass es so sauberer ist. Allgemein gesagt.

    – Wap

    02.12.12 um 18:45 Uhr


  • Warum immer Fehler finden? Ich habe nur versucht zu helfen, indem ich so schnell wie möglich eine funktionierende Alternative angeboten habe, damit er sie nutzen kann, wenn sich herausstellt, dass es das ist, wonach er sucht. Es ist nicht so, als würde ich trollen. Der Austausch von Kommentaren ist ein langer Prozess, wissen Sie. Sieh dir lieber die helle Seite an, Mann.

    – Wap

    02.12.12 um 19:00 Uhr

  • Bei SO geht es um qualitativ hochwertige Antworten auf spezifische Fragen … nicht mehr und nicht weniger.

    – Funkelnd

    2. Dezember 12 um 19:04 Uhr

Sie können dies auch auf andere Weise erreichen Taste Schild

Entsprechend dem neuen HTML5-Attribut können Sie auch ein Formularattribut wie hinzufügen

<form id="formId">
    <input type="text" name="fname">
</form>

<button id="myButton" form='#formId'>My Awesome Button</button>

Die Schaltfläche wird also an das Formular angehängt.

Dies sollte mit dem validate() Plugin von jQuery wie folgt funktionieren:

var validator = $( "#formId" ).validate();
validator.element( "#myButton" );

Es funktioniert auch mit Eingang Schild

Quelle :

https://developer.mozilla.org/docs/Web/HTML/Element/Button

.

758580cookie-checkjQuery-Formularvalidierung beim Klicken auf die Schaltfläche

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy