JavaScript - Al seleccionar un elemento de una lista (onchange) ir a una página. No puedo

 
Vista:
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una página. No puedo

Publicado por carlos (13 intervenciones) el 29/03/2014 16:57:26
Hola.
Tengo una lista con los nombre de clientes. Deseo cuando selecciono uno de ellos que vaya a otra página "GestiondeClientesDetalles.php" y le pase por URL su valor. Esto lo hago en el evento "Onchange" de la siguiente forma y funciona bien:
<select name="ListaClientes" id="ListaClientes" onchange ="javascript:window.location.href='GestionClientesDetalles.php?ID_Cli='+this.value">

Pero tengo un problema. Si en la lista por ejemplo solo hay un nombre de un único cliente, al no poder seleccionar otro pues nunca entra el evento "onchange" y no me lleva a la otra página.

Habría una solución "algo chapucera", sería poner un primer elemento en blanco. Así siempre al menos hay 2, pero no me gusta nada. Aquí se puede ver un primer elemento en blanco:



Pero queda feo y al cargar la página parece que está vacia la lista:



¿Sabéis de alguna solución a este problema?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por bathorz (10 intervenciones) el 29/03/2014 20:53:57
Tal vez con blur (al salir del select)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
window.onload = function() {
   var elem = document.getElementById('ListaClientes');
 
   elem.addEventListener("blur", function(e) {
   //e.preventDefault();
   window.location.href = 'GestionClientesDetalles.php?ID_Cli=' + this.value;
   }, false);
};
 
      <form id="form1" name="form1">
        <select name="ListaClientes" id="ListaClientes">
          <option value="1">uno</option>
          <option value="2">dos</option>
        </select>
      </form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 30/03/2014 00:42:27
Gracias bathorz. Lo he probado y funciona. Lo "malo" es que si despliego la lista pero no selecciono ningún elemento, al salir de la lista (entra blur en acción) y se redirige a la página GestionClientesDetalles sin que yo quiera. También es un pelín raro que al seleccionar un elemento no haga nada y luego tenga que poner el foco en otro sitio para que se redireccione.

Quizás lo ideal sería poder utilizar el evento "click", pero claro, cuando doy a desplegar lista para ver los elementos ya entra en acción. No sé si habrá una forma de detectar que aún no está seleccionado ningún elemento y aún no debe hacer nada hasta que se seleccione un elemento.. no sé si me explico, Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por bathorz (10 intervenciones) el 30/03/2014 11:33:13
Esto vale si solamente hay un select. El funcionamiento se hace pensando en el formulario en su conjunto, no uno de sus elementos. ¿Hay más elementos? ¿Cuáles?
Si hay más campos a completar entonces ya no decide la redirección el select.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 30/03/2014 13:16:03
Hola.

Si, es un formulario muy grande, abajo pongo parte del mismo. El select es solo uno de los muchos elementos.



Esta página ya viene rellenada. Los campos ya han sido rellenado previamente en el formulario de Alta por el cliente/empresa nueva. A esta página llega el administrador para chequearlo y ver que todo está bien, pudiendo modificarlo, actualizar... o si selecciona un elemento del select "Clientes" entonces se va a la página "GestionClientesDetalles.php" para ver en detalle ese cliente y sus datos

Si se os ocurre alguna forma, os lo agradezco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por xve (2100 intervenciones) el 30/03/2014 20:02:28
Hola Carlos, no te entiendo muy bien a que te refieres... que quieres que se abra un popup, o un layer con la información del archivo GestionClientesDetalles.php??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 02/04/2014 23:28:02
Hola. No, cuando selecciona un cliente de la lista, debe ir a otra página llamada GestionClientesDetalles.php. Lo malo es que intento hacerlo en el evento Onchange de la lista y cuando solo hay un elemento no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por bathorz (10 intervenciones) el 30/03/2014 20:22:32
Al lado del select veo una flecha, haz un evento 'click' con la misma.
1
2
3
4
5
6
7
8
9
10
<img id="flecha" src="ruta img">
 
 
var flecha = document.getElementById('flecha');
var select = document.getElementById('ListaClientes');
 
flecha.addEventListener("click", function(e) {
    e.preventDefault();
    window.location.href = 'GestionClientesDetalles.php?ID_Cli=' + select.value;
}, false);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 02/04/2014 23:31:25
Gracias Barthorz. El botón lo puse luego cuando me dijiste que hiciera la programación en el evento "onblur" cuando pierde el foco. Entonces al dar ese botón (que realmente no hace nada de nada) pierde el foco el ListBox y va a la otra página.

Esta solución del evento click del botón funciona bien gracias. Lo único malo que necesito hacer 2 clicks: uno para seleccionar el elemento en la lista y luego otro click en el botón para que ejecute. En las páginas webs lo ideal es hacer el menor número de "clicks" para que los clientes no se aburran y la página sea más rápida.. pero veo que es la única opción, si nadie dice nada más lo dejaremos así.
Muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Al seleccionar un elemento de una lista (onchange) ir a una página. No puedo

Publicado por bathorz (10 intervenciones) el 03/04/2014 18:03:20
1
De última se me ocurre agregarle multiple al select y evento "onclick"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 03/04/2014 21:53:44
Ok. Vamos a probar a ver. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por egamio (6 intervenciones) el 04/04/2014 21:08:30
Hola Carlos:

Algo que he usado para obligar a actuar al onChange, es antes de usar la lista, por ej. cuando la creas, hacer que el selectedindex sea igual a la longitud de la lista.
Así que si esta tiene un solo elemento, su longitud es 1, al seleccionar el único elemento estás seleccionando el número 0, entonces como 0 es distinto de 1 SE PRODUCE EL evento onChange.

Sería algo así:

document.form.ListaClientes.options.selectedIndex = document.form.ListaClientes.options.length;

No sé si visualmente queda como quieres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 05/04/2014 12:03:21
Hola Egamio.

NO sé como dices de hacerlo, he añadido esa línea en la definición de la List pero no me funciona:

1
2
3
4
5
6
7
<select name="ListaClientes" id="ListaClientes" onchange ="javascript:window.location.href='GestionClientesDetalles.php?ID_Cli='+this.value">
 
<script type="text/javascript">
document.form.ListaClientes.options.selectedIndex = document.form.ListaClientes.options.length;
</script>
 
</select>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por egamio (6 intervenciones) el 05/04/2014 17:31:43
Hola Carlos:

Observo que tu formulario se llama "form1" y no "form" como mal supuse, en consecuencia lo que te escribí debió rezar:

document.form1.ListaClientes.options.selectedIndex = document.form1.ListaClientes.options.length;

Esta sentencia debe cumplirse antes de usar la lista por primera vez.
Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Al seleccionar un elemento de una lista (onchange) ir a una ´página. No puedo

Publicado por carlos (13 intervenciones) el 05/04/2014 17:46:22
Parece que esta funcionando, lo probaré en varios casos distintos, Gracias por las respuestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar