Pourquoi le bouton de réinitialisation sur les formulaires html de ne pas réinitialiser les champs cachés?
J'ai découvert quelque chose de surprenant:
<html>
<head>
<script type="text/javascript">
function f()
{
document.getElementById("h").value++;
document.getElementById("x").value++;
}
</script>
</head>
<body>
<form>
<input type="hidden" name="hidden" id="h" value="5"/>
<input type="text" id="x" value="5"/>
<input name='clear' type='reset' id='clear' value='Clear'>
</form>
<button type="button" onclick="f()">Increment</button>
<button type="button" onclick="alert(document.getElementById('h').value)">Show hidden</button>
</body>
</html>
Essayer cela dans Firefox 4.0.1, en cliquant sur effacer revient toujours à la saisie de texte à 5
, mais jamais réinitialise le champ caché.
Je (et d'autres) n'a pas s'attendre à ce comportement à tous: nous nous attendions à ce que la valeur cachée pour obtenir réinitialiser trop!
Quelqu'un peut-il point de la documentation ou de spécifications, ce qui expliquerait pourquoi le caché d'entrée est traitée différemment par le bouton de réinitialisation?
Explications pourquoi un tel comportement est souhaitable sont également les bienvenus.
Quelle est la valeur du champ caché après la réinitialisation?
le même qu'il était avant la réinitialisation. E. g. si je clique sur le "Incrémenter" bouton 5 fois il devient 10, et des séjours de 10 après l'cliquant sur réinitialiser.
stackoverflow.com/questions/2559616/... w3.org/Bugs/Public/show_bug.cgi?id=8506
le même qu'il était avant la réinitialisation. E. g. si je clique sur le "Incrémenter" bouton 5 fois il devient 10, et des séjours de 10 après l'cliquant sur réinitialiser.
stackoverflow.com/questions/2559616/... w3.org/Bugs/Public/show_bug.cgi?id=8506
OriginalL'auteur trutheality | 2011-06-16
Vous devez vous connecter pour publier un commentaire.
FWIW, je pense que je peux rassembler l'intégralité de l'histoire à partir des réponses et des commentaires.
L'utilisation de la justification: Le bouton effacer est destiné à la compensation des entrées de l'utilisateur, et depuis caché entrées ne sont pas accessibles directement par l'utilisateur, il n'est pas judicieux de permettre à l'utilisateur de réinitialiser le caché d'entrée de la valeur.
De la Documentation et de comportement:
Le rapport de bug que l'AR souligné est explicite sur ce qui se passe: Le champ caché du
value
's mode,par défaut, comme c'est prévu dans le spécifications.En particulier, cela signifie que la modification de la valeur (comme dans l'exemple de code dans la question) modifie la valeur par défaut, et le bouton de réinitialisation réinitialise les champs de saisie de la valeur par défaut, donc il n'y a pas de changement.
Le comportement de la saisie de texte est différent (même si sa valeur est également modifiée par programmation) en raison de ses
value
's mode n'est pas par défaut, mais valeur, ce qui signifie qu'il existe une distinction entre la valeur par défaut de l'entrée et de la valeur actuelle.OriginalL'auteur trutheality
L'utilisateur ne peut pas voir ou modifier le champ caché, donc ça n'aurait aucun sens pour eux d'être en mesure de l'effacer en appuyant sur un bouton.
OriginalL'auteur William Lawn Stewart
Lorsque vous cliquez sur reset, le navigateur va et vérifier la valeur par défaut dans l'arborescence DOM, pas dans la page HTML.
Votre Javascript modifie le DOM. Vous devriez essayer de remplacer votre bouton de RÉINITIALISATION avec un bouton personnalisé qui appelle un Javascript qui fait deux choses:
5
.document.getElementById("x").value++;
ne pas mettre à jour la valeur dans les DOM pour la saisie de texte.Hmm, je ne savais pas que l'. Oublier la raison, je ne suis pas sûr à 100%. Mais la solution fonctionne.
OriginalL'auteur SteeveDroz
Je suis venu ici parce que je suis tombé sur cette même question. Cependant, après mûre réflexion, il est (généralement) un très comportement souhaité.
Le champ caché est le plus couramment utilisé pour stocker des informations qui vous a été envoyé par le serveur lorsque la page est chargée.
Mais il peut également être utilisé par le script pour entrer certains d'exécution-calculé entrées, la réinitialisation des champs cachés peut causer des problèmes lorsqu'il n'est pas prévu.
OriginalL'auteur HaLeiVi