Heim > Web-Frontend > js-Tutorial > JQuery Custom Validierungsregel - FieldPresent

JQuery Custom Validierungsregel - FieldPresent

Joseph Gordon-Levitt
Freigeben: 2025-02-23 09:23:09
Original
640 Leute haben es durchsucht

Dieses Tutorial zeigt, wie Sie benutzerdefinierte Validierungsregeln für Ihre Formulare mit dem Plugin jQuery.validate.js erstellen und bei einem vorherigen Leitfaden zum Einrichten der Formularvalidierung erweitert werden. Wir nutzen die $.validator.addMethod() -Funktion, um diese Regeln zu definieren. Es wird eine lebende Demo bereitgestellt, und die Beispiele beinhalten das Verschiebungsdatum der Geburtsvalidierung. HINWEIS: Eine Patched-Version, die sich mit dem Cross-Browser-Kompatibilität und der Rekursionsprobleme befasst, ist enthalten.

Beispiele:

Die folgenden Beispiele veranschaulichen benutzerdefinierte Validierungsregeln, um sicherzustellen, dass sowohl ein Name als auch ein E -Mail -Feld ausgefüllt sind. Wenn einer gefüllt ist, muss auch der andere sein.

  • Feld Validierung des linken Feldes: jQuery Custom Validation Rule - fieldPresent
  • Rechts Feld Validierung: jQuery Custom Validation Rule - fieldPresent
  • Beide Felder in Aktion (mehrere Paare): jQuery Custom Validation Rule - fieldPresent

Live -Demo:

(auf JSFiddle bearbeiten)

JQuery Code (gepatschte Version):

Dieser verbesserte Snippet löst Cross-Browser-Inkonsistenzen und Revisionsprobleme auf:

// Custom validation: each friend entered must have an email and a name
$.validator.addMethod("fieldPresent", function(value, element, options) {
    var targetEl = $('input[name="' + options.data + '"]'),
        targetEmpty = (targetEl.val() == ''),
        elEmpty = (value == ''),
        bothEmpty = elEmpty && targetEmpty;

    if (!bothEmpty && targetEmpty) {
        setTimeout(function() {
            if (targetEl.closest('.control-group-inner').find('label.fieldPresentError').length == 0) {
                targetEl.addClass('error');
                if (!elEmpty) $(element).closest('.control-group-inner').find('label.fieldPresentError').remove();
                targetEl.closest('.control-group-inner').find('label.fieldPresentError').remove();
                targetEl.after("<label class='fieldPresentError'>Friend's name and email required.</label>");
            }
        }, 500);
    }

    return (bothEmpty || !elEmpty);
}, "Friend's name and email required.");

$('#myForm').validate({
    onkeyup: true,
    rules: {
        "friend1-name": { "fieldPresent": { data: "friend1-email" } },
        "friend1-email": { "fieldPresent": { data: "friend1-name" } }
    },
    submitHandler: function(form) {
        console.log('passed validation.');
        //submit form handler
    }
});
Nach dem Login kopieren

html:

<form id="myForm">
    <div class="control-group">
        <div class="control-group-inner">
            <label for="friend1-name">Friend's name</label>
            <input type="text" name="friend1-name" />
        </div>
        <div class="control-group-inner">
            <label for="friend1-email">Email Address</label>
            <input type="email" name="friend1-email" />
        </div>
    </div>
    <button type="submit">Submit</button>
</form>
Nach dem Login kopieren

css:

.control-group {
    width: 100%;
}

.control-group-inner {
    width: 50%;
    float: left;
    display: inline-block;
}

.error {
    border: 1px solid red;
}

label.fieldPresentError {
    color: red;
    display: block;
    margin-top: 5px;
}
Nach dem Login kopieren

Geburtsdatum der Validierung des Geburtsdatums (3 Eingänge):

Dieser Abschnitt zeigt, wie ein Geburtsdatum mit drei separaten Feldern (Tag, Monat, Jahr) validiert werden kann:

// Custom validation for dob
$.validator.addMethod("dobValid", function(value, element, options) {
    var day = $('input[name="dob-day"]'),
        month = $('input[name="dob-month"]'),
        year = $('input[name="dob-year"]'),
        anyEmpty = (day.val() == '' || month.val() == '' || year.val() == '');

    if (anyEmpty) {
        day.add(month).add(year).addClass('error');
    } else {
        day.add(month).add(year).removeClass('error');
    }

    return !anyEmpty;
}, "Please enter your date of birth.");

// ... (rest of your validation code, including the rules for dob-day, dob-month, dob-year)
Nach dem Login kopieren

Denken Sie daran, die erforderlichen <script></script> -Tags für JQuery und das JQuery -Validierungs -Plugin in Ihre HTML -Datei aufzunehmen. Dieses erweiterte Tutorial bietet eine robustere und zuverlässigere Lösung für die benutzerdefinierte Formularvalidierung.

Das obige ist der detaillierte Inhalt vonJQuery Custom Validierungsregel - FieldPresent. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage