2010-08-04 5 views
6

Es fällt mir schwer, das jQuery Validation-Plugin so zu verwenden, wie ich es möchte. Bitte nackten mit mir, da ich kein Experte bin jQ :).valid() validiert nur die erste Eingabe mit jQuery Validierungs-Plugin

Was ich habe, ist ein Formular mit mehreren erforderlichen Eingaben, Regeln, wie unten gezeigt:

$("#makeEvent").validate({ 
    onfocusout: false, 
    rules: { 
     name: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     host: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     startDate: { 
      required: true, 
      date: true 
     }, 
     endDate: { 
      required: true, 
      date: true 
     }, 
     desc: { 
      required: true, 
      minLength: 10, 
      maxLength: 255 
     }, 
     webpage: { 
      required: false, 
      url: true 
     }, 
     email: { 
      required: true, 
      email: true 
     }, 
    } 
}); 

Jetzt habe ich eine benutzerdefinierte .click() -Aufruf Ich möchte das Formular validieren und dann eine Vorschau für den Benutzer anzeigen, bevor ich ihm erlaube, das Formular zu senden. Bitte beachten Sie die Funktion unter:

$('#submitPreview').click(function() { 
    if($("#makeEvent").valid() === false) { 
     //What to do if validation fails 
    } else if($("#makeEvent").valid() === true) { 
     //Show the preview and let the user either make changes or submit the final result 
    } 
}); 

Aber was passiert, ist, dass die Funktion bestätigt nur den ersten Eingang (Namen) und sogar bestätigt falsch (die Regeln erfordern ein Minimum von 2 Zeichen, noch bestätigt es mit nur 1 Zeichen eingegeben. Es gibt nur false zurück, wenn überhaupt kein Zeichen hinzugefügt wird.

Vielleicht ist meine Herangehensweise nicht die beste, also bin ich offen für irgendwelche Vorschläge. Wenn Sie sich den unordentlichen Quellcode ansehen wollen, können Sie die Funktion in Aktion hier sehen: http://event.gusthlm.se/make.php

Vielen Dank!

Antwort

19

Zwei Probleme, die ich sehen kann, sind, dass Sie nicht das name Attribut in Ihren Eingabefeldern verwenden und Sie name als eine der IDs verwenden (verursacht alle Arten von Kummer für IE beim Senden von Formularen).

Ich würde vorschlagen, das Hinzufügen der Name Ihrer Eingabeattribute auswählen und Textfeldelemente und „name“ zu so etwas wie „theName“ Ändern:

<label for="thename">Börjar</label> 
<input type="text" name="thename" id="thename"/> 
+0

was Guess? Dies hat das Problem gelöst. Ich hätte es nie erraten können ... Danke! –

+0

Ich weiß, das ist alt, aber ich habe ein Problem, wo ich das Namensfeld nicht haben kann. Ich verwende Stripe, um Kreditkarten zu validieren und um zu verhindern, dass die Kreditkarteninformationen unseren Server treffen, müssen wir das Namensattribut ausschließen. Ich bin auch neugierig, warum das Namensattribut irgendeine Auswirkung auf die clientseitige Validierung hat? – computrius

+0

@computrius, Da das jQuery Validate-Plugin ein name-Attribut benötigt, ist es die Art, wie der Entwickler entschieden hat, dass das Plugin die Eingaben verfolgen soll. – Sparky