jquery (option:selected)

soanix

Hola buenas,

Sea como sea tengo que comprobar a tiempo real si un <option> est en select="selected".

Para así mandar por methos="POST" un valor en un <input type="hidden">

Había pensado algo así:

<select name="cols<?=$c?>">
                    <option value="ignore" selected="selected">Ignore Column</option>
                    <option value="id_product">id_product</option>
                    <option name="reference" value="reference">Reference num</option>
                    <script>
                        $(document).ready(function(){
                            if ($("#reference option:selecred").length)
                            "<input type='hidden' name='ref' value='<?=$c?>'>"
                        })
                    </script>
                    <option value="wholesale_price">Wholesale Price</option>
                    <option value="price">Price -Tax</option>
                    <option value="quantity">Quantity</option>
</select>

Pero xD como es de esperar no funciona.

El en codigo fuente puedo comprobar que el value de $c me lo da correctamente, pero por mucho que cambie en el formulario el desplegable seguirá estando ignore seleccionado.

Alguien sabe como puedo hacerlo. Se que va por aqui la cosa, pero yo en jquery estoy un poco pez como podéis comprobar.

Un saludo y gracias!

soanix

option:selecred xDDDD muy bien ahora os digo si cambiandolo funciona

soanix

no era eso

m0rG

Yo no soy un experto en JQuery pero diría que el selector está mal (aparte del typo que ya has comentado). Estás intentando seleccionar un objeto con id "reference" (con el #reference) y ese id no existe (ya que en realidad es un nombre). Aparte de eso creo que tienes que seleccionar la lista y no la opcion (dado que la opción ya la seleccionas con el atributo option:selected). En definitiva, el código quedaría algo así:

    <select id="miselect" name="cols<?=$c?>">
                        <option value="ignore" selected="selected">Ignore Column</option>
                        <option value="id_product">id_product</option>
                        <option name="reference" value="reference">Reference num</option>
                        <script>
                            $(document).ready(function(){
                                if ($("#miselect option:selected").length)
                                "<input type='hidden' name='ref' value='<?=$c?>'>"
                            })
                        </script>
                        <option value="wholesale_price">Wholesale Price</option>
                        <option value="price">Price -Tax</option>
                        <option value="quantity">Quantity</option>
    </select>

Básicamente ponle un id al <select> y después selecciona en JQuery con ese id y el atributo option:selected. Aun así para lo que quieres yo diría que esto tampoco te sirve. La comprobación de lo que tienes seleccionado en la lista la debes hacer siempre que cambie dicha selección y no cuando termina de cargar la página como lo tienes ahora ($(document).ready...)

soanix

y cual es dicha comprovacion, si no es ready como es selected.change? xD

Fr4nk0

Si no pones un document.write con el input type hidden, dudo mucho que ese contenido se inserte en el DOM y pueda ser enviado al enviar el formulario.

En segundo lugar, si no pones esa funcion en el evento onchange del select, el valor que te pondrá es el que esté seleccionado cuando el DOM esté preparado (ready), que en tu caso es el valor "ignore".

soanix

Solucionado

al final con esto me sirvió:

if(opcio=="reference"){
	$("input#ref").val( $(columna).attr("id").substring(4, 6) );
}

Usuarios habituales

  • soanix
  • Fr4nk0
  • m0rG