He descubierto algo sorprendente:

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

De intentar esto en Firefox 4.0.1, haciendo clic en borrar siempre se restablece el texto de entrada para 5, pero nunca restablece el campo oculto.

Yo (y otros) no esperaba este comportamiento en todo: se espera que el valor oculto para conseguir restablecer demasiado!

¿Alguien puede apuntar a la documentación o especificaciones que explican por qué la entrada oculto es tratada de forma diferente por el botón de reset?

Explicaciones del porqué de este comportamiento es deseable también son bienvenidos.

¿Cuál es el valor del campo oculto tras el reset?
el mismo que era antes de la restauración. E. g. si hago clic en el «Incremento» botón 5 veces se convierte en 10, y en estancias de 10 después de hacer clic en restablecer.
stackoverflow.com/questions/2559616/… w3.org/Bugs/Public/show_bug.cgi?id=8506

OriginalEl autor trutheality | 2011-06-16

3 Comentarios

  1. 14

    Por lo que vale, creo que me puede poner la historia completa de las respuestas y comentarios.

    Uso de justificación: El botón clear está diseñado para la limpieza de la entrada del usuario, y ya que oculta las entradas no son directamente accesibles por el usuario, no tiene sentido para permitir que el usuario restablezca la entrada ocultos del valor.

    Documentación y comportamiento:
    El informe de error que AR señalado es explícito acerca de lo que está sucediendo: El campo oculto del value‘modo s es por defecto, como es la intención en la especificaciones.

    En particular, esto significa que al cambiar el valor (como en el código de ejemplo en la pregunta) los cambios en el valor predeterminado y el botón de restablecimiento restablece los campos de entrada para el valor predeterminado, por lo tanto no hay ningún cambio.

    El comportamiento de la entrada de texto es diferente (aunque su valor es también cambiar mediante programación), porque su value‘s mode no está predeterminado, sino valor, lo que significa que hay una distinción entre el valor predeterminado de la entrada y el valor actual.

    OriginalEl autor trutheality

  2. 6

    El usuario no puede ver o modificar el campo oculto, por lo que no tendría ningún sentido para ellos para ser capaces de eliminar pulsando un botón.

    OriginalEl autor William Lawn Stewart

  3. 3

    Cuando se hace clic en restablecer, el navegador va y comprobar el valor predeterminado en el árbol DOM, no en el código HTML de la página.

    Javascript modifica el DOM. Usted debe tratar de reemplazar tu botón de REINICIO con un botón personalizado que llama a un Javascript que hace dos cosas:

    • restablecer la normalidad.
    • establecer el campo oculto 5.
    Interesante, así que document.getElementById("x").value++; no actualizar el valor en el DOM para la entrada de texto.
    Hmm, yo no veo eso. Olvidarse de la razón, no estoy 100% seguro de ello. Pero la solución funciona.

    OriginalEl autor SteeveDroz

Dejar respuesta

Please enter your comment!
Please enter your name here