2012-04-12 19 views
0

Ich benutze das jQuery Formular-Assistent-Plugin. Ich habe 20 Fragen, die jeweils drei Antworten haben. Jede Antwort kann ein Gewicht haben. Für jede Frage muss das Gesamtgewicht der Antworten auf 10.Herausfinden der Formularvalidierung, um einen Wert über mehrere Eingaben zu validieren

<fieldset id="first" class="step"> 
    <input type="text" size="2" maxlength="2" value="" name="question1[]" class="required"/>A: Inspiring others with a compelling vision for change.<br /> 
    <input type="text" size="2" maxlength="2" value="" name="question1[]" />B: Engaging others to buy-into the change.<br /> 
    <input type="text" size="2" maxlength="2" value="" name="question1[]" />C: Executing a project plan and managing accountabilities.<br /> 
    <label for="question1[]" class="error" style="display:none;">Your values must add up to 10!</label> 
</fieldset> 

Dies ist im Grunde eine Persönlichkeitsanalyse gleich sein. Nehmen wir an, ich fühle, dass A und C nicht zutreffen. Ich würde 10 für A eingeben.

Gibt es eine Möglichkeit zu überprüfen, ob jeder Feldsatz bis zu 10 addiert und wenn keine Fehlermeldung gesendet wird?

ich die jQuery Validierung Plugin verwenden, aber dies scheint ein wenig zu genau zu sein, wie ich es überprüft, für die Zahlen kenne, usw.

Ich habe versucht, etwas in dem folgenden sogar zu erhalten eine hinzufügen required Kontrolle passieren, aber ich bin nicht sicher, wo man von hier geht:

$(document).ready(function() { 
    $("#Form").validate({ 
     submitHandler: function(form) { 
      form.submit(); 
     } 
    }); 
    $("#Form input[name='question1']").each(function() { 
     $(this).rules("add", { 
      required: true, 
      maxlength: 2, 
      messages: { 
       required: "Required", 
       minlength: jQuery.format("Max length of {2} characters.") 
      } 
     }); 
    }); 
}); 

ich habe auch festgestellt, dass jQuery Validate bearbeitet eine Funktion haben musste Arrays zu empfangen. Ich habe die folgende Funktion geändert:

checkForm: function() { 
    this.prepareForm(); 
    for (var i=0, elements=(this.currentElements = this.elements()); elements[i]; i++) { 
     if (this.findByName(elements[i].name).length != undefined && 
      this.findByName(elements[i].name).length > 1) { 

      for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) { 
       this.check(this.findByName(elements[i].name)[cnt]); 
      } 
     } 
     else { 
      this.check(elements[i]); 
     } 
    } 
    return this.valid(); 
} 

ich auch schon versucht, diese haben:

$(document).ready(function(){ 
    $("#Form").validate({ 
     rules: { 
      question1: { 
       required: true 
      } 
     }, 
     submitHandler: function(form) { 
      form.submit(); 
     } 
    }); 
}); 

Nichts davon scheint mir zu arbeiten, um auch eine ‚erforderlich‘ Fehler. In der Konsole sind keine Fehler aufgetreten. Ich muss dies bei jeder Frage bestätigen, wenn die "nächste" Taste gedrückt wird. Der nächste Button hat type=submit, so sollte es theoretisch zumindest sehen, dass ich Frage 1 gefordert habe, aber vergeblich.

Ich habe auch versucht diese:

$().ready(function() { 
    // validate the comment form when it is submitted 
    $("#Form").validate({ 
     rules: { 
      "question1[]": "required" 
     }, 
     messages: { 
      "question1[]": "Input is required", 
     } 
    }); 
}); 

Aber es geht weiter zum nächsten Fieldset ohne Fehler.

+0

ich bin neu zu all dem ich versuche nur sicherzustellen, dass es sogar möglich ist – RezenX

+0

Natürlich ist es möglich. Alles ist möglich. – Dutchie432

+0

Ja, ich stelle eine Frage und bekomme ein -1 haha. schön, wie ich versuche, meinen Rang aufzubauen. Ich bin nur verloren, wenn es um all diese benutzerdefinierte Validierung kommt – RezenX

Antwort

1

In diesem Fall erstellen Sie einen neuen Eingang, der deaktiviert ist. Wenn sich die einzelnen Gewichtswerte ändern, ändern Sie den Wert dieses deaktivierten Eingangs als Summe. Validieren Sie die deaktivierte Eingabe - fordern Sie, dass der Wert gleich 10 ist, und wenn dies nicht der Fall ist, zeigen Sie einen Fehler an.

+0

ich mag diese Idee. lass mich es versuchen. – RezenX

+0

brillanter Vorschlag. einwandfrei wie geplant arbeiten! Danke, ich werde etwas Beispielcode einfügen, damit ihr alle sehen könnt, wie es funktioniert, sobald ich es komplett ausgebügelt habe. – RezenX

+0

Danke, ich bin froh, dass ich helfen konnte. –