Pregunta

Todo,

puedo restablecer todos mis elementos de formulario utilizando la siguiente sintaxis de jQuery:

('#myform')[0].reset();

¿Cómo puedo modificar esto para excluir el restablecimiento de los valores de "caja de selección"?

Gracias

¿Fue útil?

Solución

Para todos ..

la función de reinicio no fija todo para '' (cadena vacía)

se restablecen a sus valores iniciales .. (almacenado en el atributo de valor, o la opción etc .. seleccionados)

Si desea mantener las características de reinicio por defecto, entonces debería

  1. obtener todos los elementos <select>
  2. obtener sus valores actualmente seleccionados
  3. restablecer la forma como se hace actualmente
  4. re-establecer el
  5. seleccionado

ejemplo:

<script type="text/javascript">
  $(document).ready(
  function(){
   $("#resetbutton").click(
    function(){
     var values = [];
     var selected = $("select").each(
      function(){
       values.push( $(this).val());
       });
     this.form.reset();
     for (i=0;i<selected.length;i++)
      $(selected[i]).val(values[i]);
    });
    }
  );
 </script>

Otros consejos

Eso no es jQuery, es javascript nativo. [0] pone de manifiesto el elemento de DOM real, por lo que es lo mismo que:

document.getElementById('myform').reset();

reset() es una aplicación de navegador incorporado que restablece el formulario completo. Si es necesario restablecer los tipos de formulario individuales, intente algo como:

$('#myform :text').val('');

Se puede ver todos los selectores de formulario aquí: http://docs.jquery.com/Selectors

Puede realizar un restablecimiento falso mediante el establecimiento de los valores en una cadena vacía y restablecer las casillas de verificación usando la respuesta de David (o esta más completa uno ). También podría intentar almacenar el valor de cada elemento de selección antes de restablecer la forma y luego restaurar los valores después de:

var myform = $('#myform');
var selects = $('select', myform);

// Store each current value
selects.each(function() {
    $(this).data('previous', $(this).val()); 
});

myform[0].reset();

// Restore the values
selects.each(function() {
    $(this).val($(this).data('previous')); 
});

Por la razón que sea, haga en respuesta error'd mi Google Chrome js de David. Es como decir:

TypeError no detectada: 'Reset' Propiedad del objeto # no es una función

... así que decidí intentar una solución ligeramente diferente:

  • Dar botones de reinicio del navegador nativo atributos "oculta" y ajuste "id":

<input id="resetbutton" type="reset" style="visibility:hidden;" name="reset" value="reset" />

  • Iniciar jQuery evento "click" en el botón de reinicio de hacer clic en el enlace:

<a href="#" onclick="$('#resetbutton').click();">Reset</a>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top