Wie kann ich mit jQuery Validation die genaue Länge überprüfen?

Lesezeit: 4 Minuten

Benutzer-Avatar
Nathan Lang

Verwendung der jQuery-Validierungs-Plugin Um Formulare zu validieren, wie würden Sie bestätigen, dass eine Zeichenfolge genau X Zeichen lang ist?

  • Hinweis: Diese Frage und meine Antwort sind alt. Werfen Sie einen Blick auf einige der neueren Antworten; sie implizieren, dass jetzt bessere Lösungen möglich sind.

    – Nathan Lange

    20. November 2015 um 15:38 Uhr


Benutzer-Avatar
Nathan Lang

Da es dafür (derzeit) keine eingebaute Methode gibt, müssten Sie Ihre eigene Methode hinzufügen. Das würde funktionieren:

jQuery.validator.addMethod("exactlength", function(value, element, param) {
 return this.optional(element) || value.length == param;
}, $.validator.format("Please enter exactly {0} characters."));

Was dann so verwendet werden könnte:

$("#formtovalidate").validate({
  rules: {
    somefield: {
      exactlength: 10
    }
   });

Aktualisieren – So funktioniert es

Ich wurde gefragt, wie das funktioniert. Ich kenne nicht alle Einzelheiten; Ich habe diese Methode auf bereits existierende modelliert. Dies ist jedoch mein bester Versuch, es zu erklären.

  • Die Funktion übernimmt value, elementund param.
    • value ist der in das zu validierende Feld eingegebene Wert
    • element ist das Feld selbst
    • param ist alles, was nach dem Regeltyp und dem Doppelpunkt kommt. Im obigen Beispiel ist es die 10 Zoll exactlength: 10
  • Die nächste Zeile ist a return Aussage. Dadurch wird das endgültige Urteil der Validierungsmethode an den Code zurückgegeben, der sie aufgerufen hat. Jede Validierungsmethode, die zurückgegeben wird true sagt: “Dieses Feld besteht die Validierung!” Es gibt den Wert der Zeile zurück, auf der es sich befindet.
  • Das return gefolgt von zwei Deklarationen, getrennt durch einen ‘or’-Operator (||).
    • Das || Operator bedeutet ‘bewerten Sie das Element, das davon übrig ist. Wenn es wahr ist, gib wahr zurück. Wenn nicht, versuchen Sie es rechts. Wenn es wahr ist, gib wahr zurück. Geben Sie andernfalls false zurück.’
      • Das Element auf der linken Seite ist this.optional(element). Wenn das Element in Ihren Regeln nicht erforderlich ist, wird dies wahr zurückgegeben, ebenso wie die Validierung. Was bedeutet: “Wenn ich Ihnen nicht sage, dass dieses Feld erforderlich ist, ist es mir egal, ob es validiert wird.”
      • Wenn das Feld erforderlich ist, bewegen wir uns auf die rechte Seite des ||. Dies ist der eigentliche Validierungstest. Es vergleicht die Länge der Feldeingabe mit der von Ihnen angegebenen Länge. Wenn sie gleich sind, gibt es true zurück, die Methode gibt true zurück und die Validierung wird bestanden. Andernfalls schlägt die Validierung fehl.

Das ist alles. Weitere Hilfe finden Sie unter Dokumentationinsbesondere der Teil über benutzerdefinierte Validierungsmethoden.

  • Wahrscheinlich klug, diese Frage als beantwortet zu markieren? (auch wenn du es selbst beantwortet hast :P)

    – Jason Berry

    5. August 2009 um 7:08 Uhr

  • Wie funktioniert es? Was ist zum Beispiel element und param? Ich bin mir auch nicht sicher, was this.optional(element) tut? Danke übrigens, das habe ich gebraucht.

    – Chobo2

    20. August 2009 um 19:56 Uhr

  • Wo soll jQuery.validator.addMethod definiert werden (? es gibt mir einen Fehler.

    – Mohammed

    26. September 2014 um 6:40 Uhr

  • jQuery.format ist veraltet. Sie müssen stattdessen jQuery.validator.format verwenden

    – jinavar1

    2. März 2016 um 19:03 Uhr

Beispiel:

rules : {
"someFieldName":{digits:true,minlength:20,maxlength:20}
}

  • Ha! Das ist viel einfacher. Der einzige Nachteil ist, dass die Fehlermeldungen möglicherweise etwas unklarer sind als “Bitte geben Sie GENAU X Zeichen ein”. Aber es geht sicher einfacher. 🙂 +1

    – Nathan Lange

    25. August 2011 um 13:22 Uhr

  • @NathanLong Sie können die Fehlermeldungen auch überschreiben. Sehen Sie sich meine Antwort für ein Beispiel an: stackoverflow.com/a/33815512/246743

    – Ted Avery

    19. November 2015 um 22:26 Uhr

Am einfachsten ist es, die vorhandenen Validierungsmethoden über Datenattribute zu verwenden und dann zur Verdeutlichung einfach Ihre eigene Validierungsnachricht festzulegen.

<input data-rule-minlength="8" data-rule-maxlength="8" data-msg-minlength="Exactly 8 characters please" data-msg-maxlength="Exactly 8 characters please">

  • Ich habe deinen Weg nicht ausprobiert, aber es sieht viel einfacher aus. Diese Frage ist von ’09. Ich habe oben einen Kommentar hinzugefügt, damit die Leute neuere Antworten ausprobieren können. Vielen Dank für die Veröffentlichung eines aktualisierten Ansatzes.

    – Nathan Lange

    20. November 2015 um 15:39 Uhr

Benutzer-Avatar
Lars Gyrup-Brink Nielsen

Du könntest auch das Vorhandene machen rangelength -Methode unterstützt den genauen Bereich, indem eine dynamische Nachricht wie die folgende bereitgestellt wird:

$.extend($.validator.messages, {
    rangelength: function(args, inputElement) {
        var isExactRange, min, max;

        // Cast arguments as numbers
        min = Number(args[0]);
        max = Number(args[1]);

        isExactRange = min === max;

        if (isExactRange) {
            return 'Please enter exactly ' + min + ' characters.';
        }


        return 'Please enter between ' + min + ' and ' + max + ' characters.';
    }
);

Wie zu sehen ist, können Sie Nachrichten basierend auf den Argumenten, die an die Validierungsmethoden übergeben werden, spontan generieren. Nachrichtenrückrufen werden die Validierungsmethodenargumente als ihr erstes Argument und das zu validierende Eingabeelement als ihr zweites Argument übergeben.

Dadurch ist es möglich, eine Nachricht zurückzugeben, wenn ein genauer Bereich angegeben ist, aber eine andere, wenn Ober- und Untergrenze nicht identisch sind.

Um auf die Standardeinstellung zurückzugreifen rangelength Nachricht, ersetzen

'Please enter between ' + min + ' and ' + max + ' characters.'

mit

$.validator.messages.rangelength

Es wäre schön, wenn die offizielle Dokumentation aktualisiert würde, da sie schwer zu navigieren ist und nicht alle Funktionalitäten des Plugins beschreibt.

1146030cookie-checkWie kann ich mit jQuery Validation die genaue Länge überprüfen?

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

Privacy policy