Löschen, Entfernen oder Zurücksetzen des HTML5-Formularüberprüfungsstatus nach "setCustomValidity (" ... ");"?

Löschen, zu entfernen oder den reset-HTML5 Formular-Validierung Zustand nach setCustomValidity("...");?

Einstellung ein leerer string ist, setCustomValidity(""); im Firefox und Chrome schließt das Formular-Validierung Fehlermeldung. Ich möchte nicht schließen Sie die Formular-Validierung Fehlermeldung. Ich möchte zum zurücksetzen der überprüfung Stand, so dass die nächste Antwort, die überprüft werden kann und auch zu halten, die angezeigt Validierung Fehlermeldung. Wenn die Validierung Zustand nicht zurückgesetzt wird, dann wird auch der nächste, richtige Antwort falsch zeigen eine Validierung Fehlermeldung.


So irgendwie "klar" bedeutet "in der Nähe"?

Wenn das argument ein leerer string ist, löscht die benutzerdefinierten Fehler.

http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#the-constraint-validation-api


Hier ist eine Validierung der test-case:

<!DOCTYPE html>
<html dir="ltr" lang="en">
    <head>
        <meta charset="utf-8"/>
        <title>Validation test case</title>
    </head>
    <body>
        <form id="testForm">
            <input type="text" id="answer" pattern="[A-Za-z]+" autofocus required/>
            <input type="submit" value="OK"/>
        </form>

        <script>
            /*jslint browser: true, vars: true, white: true, maxerr: 50, indent: 4 */
            (function ()
            {
                "use strict";

                var form = null;
                var answer = null;

                var isCorrectAnswer = function (value)
                {
                    return (value === "a");
                };

                var closeValidation = function (element)
                {
                    //Close the form validation error message if displayed.
                    element.blur();
                    element.focus();
                };

                var validateForm = function (event)
                {
                    event.preventDefault();
                    event.stopPropagation();

                    var isValidForm = event.target.checkValidity();
                    if (isValidForm)
                    {
                        if (isCorrectAnswer(answer.value))
                        {
                            form.reset();
                            closeValidation(answer);

                            console.log("Correct answer.");
                            alert("Correct answer.");
                        }
                        else
                        {
                            console.log("Incorrect answer.");
                            answer.setCustomValidity("Incorrect answer.");
                            answer.checkValidity();
                            //answer.setCustomValidity("");
                        }
                    }
                };

                window.addEventListener("DOMContentLoaded", function ()
                {
                    form = document.getElementById("testForm");
                    answer = document.getElementById("answer");

                    form.addEventListener("submit", validateForm, false);
                }, false);
            }());
        </script>
    </body>
</html>

Geben eine falsche Antwort, keine Buchstaben(s), sondern "ein", und drücken Sie die EINGABETASTE.
Geben Sie die richtige Antwort "a", und drücken Sie die EINGABETASTE.

Ohne änderungen an der test-Fall, das Verhalten ist das gleiche in Opera, Firefox und Chrome (mit Ausnahme der Chrom-Fehler). Die Validierung Fehlermeldung weiterhin angezeigt wird, unabhängig davon, ob die Antwort richtig oder falsch ist.

Nun, nach answer.setCustomValidity(""); ist unkommentiert, Opera löscht die benutzerdefinierte Gültigkeitsprüfung Fehler aber nicht in der Nähe der Validierung Fehlermeldung, die ist, was ich erwarte. Auf der anderen Seite, Firefox und Chrome beide deaktivieren Sie die benutzerdefinierte Gültigkeitsprüfung Fehler und schließen Sie die validation-Fehlermeldung (bug?).


FEHLER: Chrom nicht "checkValidity()" als erste aufgerufen.

In Chrom, answer.checkValidity(); nicht in die Validierungs-Nachricht nach dem ersten Einreichen. Nachfolgende vorlegt, zeigen die Validierung Fehlermeldung.

http://code.google.com/p/chromium/issues/detail?id=95970

FEHLER: In Chrom, die Validierung Fehlermeldung wird ausgeblendet, aber nicht geschlossen werden, wenn die Eingabe geändert wird.

http://code.google.com/p/chromium/issues/detail?id=95973


Opera 11.51 Build 1087

Firefox 6.0.2

Google Chrome 13.0.782.220 m

InformationsquelleAutor der Frage XP1 | 2011-09-09

Schreibe einen Kommentar