Comment faire pour effacer, supprimer ou réinitialiser le HTML5 formulaire de validation de l'état après “setCustomValidity(”...“);”?

Comment faire pour effacer, supprimer ou réinitialiser le HTML5 formulaire de validation de l'état après setCustomValidity("...");?

Paramètre une chaîne vide, setCustomValidity("");, dans Firefox et Chrome se ferme le formulaire de message d'erreur de validation. Je ne veux pas fermer le formulaire de message d'erreur de validation. Je veux réinitialiser l'état de validation de sorte que la réponse suivante peut être vérifiée et aussi pour garder l'affichage de message d'erreur de validation. Si l'état de validation n'est pas réinitialisé, alors même que la prochaine, bonne réponse, à tort, afficher un message d'erreur de validation.


Donc, en quelque sorte, "clair" signifie "fermer"?

Si l'argument est la chaîne vide, efface l'erreur personnalisé.

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


Ici est un test de validation de cas:

<!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>

Type une réponse incorrecte, des lettres de son nom(s), mais "une", et appuyez sur Enter.
Type de la réponse correcte "a", et appuyez sur Enter.

En l'absence de modifications du cas de test, le comportement est le même dans l'Opéra, Firefox et Chrome (à l'exception du Chrome bugs). La validation de message d'erreur persiste, peu importe si la réponse est correcte ou incorrecte.

Maintenant, après answer.setCustomValidity(""); est retirée, l'Opéra efface la validation personnalisée d'erreur, mais ne pas fermer le message d'erreur de validation, qui est ce que j'attends. D'autre part, Firefox et Chrome à la fois clair la validation personnalisée d'erreur et fermez le message d'erreur de validation (bug?).


BUG: Chrome n'est pas "checkValidity()" lors de la première invoquée.

En Chrome, answer.checkValidity(); n'affiche pas le message de validation après la première soumettre. Ultérieure soumet afficher le message d'erreur de validation.

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

BUG: Dans Chrome, le message d'erreur de validation est effacé mais pas fermé lorsque l'entrée est changé.

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


Opéra 11.51 Construire 1087

Firefox 6.0.2

Google Chrome 13.0.782.220 m

InformationsquelleAutor XP1 | 2011-09-09