2012-06-06 17 views
6

Estoy actualizando la opción seleccionada mediante programación mediante jQuery, pero no hay cambios en el navegador. (Es decir, la opción seleccionada anterior permanece seleccionada en lugar de cambiar a la opción recién seleccionada.) ¿Sugerencias?La opción de actualizar después de seleccionar ha sido modificada por jQuery

Gracias. --Jeff

Tengo una forma simple como esto:

<form id="form1" name="form1" method="" action=""> 
<p>Assign: 
<select name="assigner" id="assigner"> 
<option value="Sam" selected="selected">Sam</option> 
    <option value="Harry">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
<input type="button" name="button1" id="button1" value="Submit" /> 
</p> 
<p> Task A: <select name="assignment[]" id="assigner"> 
    <option value="Sam">Sam</option> 
    <option value="Harry" selected="selected">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
</p> 
<p>  
Task B: <select name="assignment[]" id="assigner"> 
    <option value="Sam">Sam</option> 
    <option value="Harry" selected="selected">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
</p> 
</form></div> 

y mi código de jQuery se ve así:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){ 
     var form = $(this).parents('form'); 
     var assigned = form.find(':selected').first().val(); 
     form.find(':selected').each(function(index){ 
      $(this).val(assigned).change(); 
     }); 
    } 
); 
}); 
</script> 
+1

Las identificaciones deben ser exclusivas. – j08691

+0

Tienes razón. Gracias. – jalperin

Respuesta

4

estoy actualizando la opción seleccionada mediante programación utilizando jQuery

No es tan lejos como puedo ver. Está restableciendo el valor del option seleccionado, pero no hago nada por lo que puedo decir al cuadro select.

Para cambiar un cuadro de select, es necesario identificarla, a continuación, llamar val en que, ni uno solo de sus elementos option.

No puedo distinguir lo que quiere que su input[name="button1"] haga, pero aquí hay un ejemplo de actualización de una casilla select: Live copy | source

HTML:

<select id="theSelect"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 
<input type="button" id="theButton" value="Click me"> 

JavaScript:

jQuery(function($) { 

    $("#theButton").click(function() { 
    $("#theSelect").val("2"); 
    }); 

}); 

Por otra parte, como j08691 señaló en los comentarios, no se puede asignar el mismo valor id ("assigner") a más de un elemento id values must be unique en el documento. Su código no muestra el uso de ese id, por lo que puede no estar relacionado, pero vale la pena marcar.

+0

Mi formulario se genera a partir de una consulta de base de datos, por lo que no necesariamente sabrá los ID de los cuadros de selección (o incluso cuántos aparecerán en el formulario). Además, hay múltiples formularios (todos estructurados de manera similar) en cada página. Lo que trato de hacer es permitir que el usuario actualice todas las casillas SELECCIONAR en un formulario con la opción seleccionada del primer cuadro de selección. Entonces, el usuario asigna a Harry todas las tareas al seleccionar a Harry en la primera casilla de selección y enviar. Lo que realmente necesito, supongo, es una forma de seleccionar todas las casillas SELECCIONAR que aparecen en la misma forma que el botón al que se hace clic. – jalperin

+0

@jalperin: * "Lo que realmente necesito, supongo, es una forma de seleccionar todas las casillas SELECCIONAR que aparecen en la misma forma que el botón al que se hace clic." * '$ (This) .closest ('form') .find ('select') 'lo haría, desde dentro de un manejador de eventos en el botón. '$ (this)' ajusta el botón en un objeto jQuery. 'closest ('form')' devuelve un objeto jQuery para el elemento 'form' más cercano en la jerarquía. Luego 'find ('select')' encuentra todos los elementos 'select' dentro de esa forma. –

1
<form id="form1" name="form1" method="" action=""> 
    <p>Assign: 
     <select name="assigner" id="assigner"> 
      <option value="Sam" selected="selected">Sam</option> 
      <option value="Harry">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
     <input type="button" name="button1" id="button1" value="Submit" /> 
    </p> 
    <p> 
     Task A: <select name="assignment[]" id="assigner2"> 
      <option value="Sam">Sam</option> 
      <option value="Harry" selected="selected">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
    </p> 
    <p>  
     Task B: <select name="assignment[]" id="assigner3"> 
      <option value="Sam">Sam</option> 
      <option value="Harry" selected="selected">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
    </p> 
</form> 



<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){ 
     var assigned = $("#assigner").val(); 
     $('#form1 select').val(assigned); 
    } 
); 
}); 
</script> 
Cuestiones relacionadas