
Convertir lista desplegable en variable
Publicado por Danielo (2 intervenciones) el 20/01/2016 12:58:11
Hola, buenos días.
Mi nombre es Dani y vengo a haceros una consulta acerca de un cambio que me gustaría hacer en un formulario pero no sé muy bien como modificarlo.
El caso es que tengo un formulario que puede recuperar varias líneas de valores (pongamos por ejemplo 3 valores); cuando se muestra en pantalla aparece como una combo en donde se puede elegir los valores de 1 a 9, y si se detecta que hay algún cambio en ese valor que previamente se ha recuperado de tablas, se marca una check y se actualiza en la tabla con el nuevo valor.
La idea que tengo es sustituir esa lista desplegable por una caja en donde aparezca el valor previamente recuperado, y añadir un botón a la izquierda "-" y uno a la derecha "+" de dicha caja en donde el usuario pueda decrementar o incrementar el valor previamente recuperado, o bien sin añadir dichos botones, cuando el usuario haga click con el botón izquierdo aumentar en 1 dicho valor o disminuirlo si el click lo hace con el botón derecho.
He estado revisando el código que tengo y no sé bien que modificar, ya que para marcar la check de cuando detecta un cambio en el valor recuperado, no se como pasar el valor del campo modificado.
El código que tengo es el siguiente:
Para la check que se marca cuando detecta un cambio:
siendo $card[ref]" cada uno de los elementos recuperados ( en el ejemplo de los tres valores: ref001, ref002 y ref003)
A continuación de esta check tengo el código que quiero sustituir:
en la variable $options le paso el valor recuperado de tablas, mostrando al usuario ese valor por defecto al mostrar el desplegable con las opciones 1 a 9.
Ejemplo:
(en este caso muestro un 1 por defecto en el desplegable)
Cuando se produce un cambio de ese valor, se llama a la función check_varios que está codificada de la siguiente forma:
Lo que hace es marcar la check que comentaba antes cuando se detecta un cambio en el valor original.
Como he comentado, mi idea es cambiar el código que he comentado arriba por algo tipo:
y crear una nueva función, controlando el 0 como valor mínimo y el 9 como valor máximo, para que sume o reste según el botón pulsado y siga manteniendo el control sobre la check (para que se marque si ha habido algún cambio) que sea algo así:
siendo $original el valor original recuperado de tablas (el cual es el que puede modificar el usuario sumando o restando uno).
A parte de la suma me gustaría que siguiese siendo controlado el cambio de valor llamando a la función check_varios.
No tengo idea de php pero me dá que el planteamiento es erróneo, no sé yo si ese código puede funcionar y si cuando el usuario pinche el valor de submit, cada uno de los tres elementos del formulario va a pasar a la tabla el nuevo valor que se haya modificado.
¿Alguna sugerencia de alguna forma sencilla de hacerlo, ya sea añadiendo los botones "+" y "-" a la página o activando algún control de click derecho/izquierdo de ratón?
Muchas gracias por adelantado.
Mi nombre es Dani y vengo a haceros una consulta acerca de un cambio que me gustaría hacer en un formulario pero no sé muy bien como modificarlo.
El caso es que tengo un formulario que puede recuperar varias líneas de valores (pongamos por ejemplo 3 valores); cuando se muestra en pantalla aparece como una combo en donde se puede elegir los valores de 1 a 9, y si se detecta que hay algún cambio en ese valor que previamente se ha recuperado de tablas, se marca una check y se actualiza en la tabla con el nuevo valor.
La idea que tengo es sustituir esa lista desplegable por una caja en donde aparezca el valor previamente recuperado, y añadir un botón a la izquierda "-" y uno a la derecha "+" de dicha caja en donde el usuario pueda decrementar o incrementar el valor previamente recuperado, o bien sin añadir dichos botones, cuando el usuario haga click con el botón izquierdo aumentar en 1 dicho valor o disminuirlo si el click lo hace con el botón derecho.
He estado revisando el código que tengo y no sé bien que modificar, ya que para marcar la check de cuando detecta un cambio en el valor recuperado, no se como pasar el valor del campo modificado.
El código que tengo es el siguiente:
Para la check que se marca cuando detecta un cambio:
1
<input type="checkbox" name="repeatedcards[$card[ref]]" id="repeatedcard_$card[ref]" value="$card[ref]" />
siendo $card[ref]" cada uno de los elementos recuperados ( en el ejemplo de los tres valores: ref001, ref002 y ref003)
A continuación de esta check tengo el código que quiero sustituir:
1
2
3
<select name="quantity[$card[ref]]" onchange="check_varios('$card[ref]')"> -->
$options -->
</select> -->
en la variable $options le paso el valor recuperado de tablas, mostrando al usuario ese valor por defecto al mostrar el desplegable con las opciones 1 a 9.
Ejemplo:
1
<option value="1">0</option><option value="2" selected="selected">1</option><option value="3">2</option><option value="4">3</option><option value="5">4</option><option value="6">5</option><option value="7">6</option><option value="8">7</option><option value="9">8</option><option value="10">9</option>
(en este caso muestro un 1 por defecto en el desplegable)
Cuando se produce un cambio de ese valor, se llama a la función check_varios que está codificada de la siguiente forma:
1
2
3
4
5
6
7
8
9
function check_varios(ref)
{
var name="repeatedcards["+ref+"]";
var quantityname="quantity["+ref+"]";
var field = document.updaterepeatedform[name];
var qfield = document.updaterepeatedform[quantityname];
field.checked=true;
field.value=qfield.value;
}
Lo que hace es marcar la check que comentaba antes cuando se detecta un cambio en el valor original.
Como he comentado, mi idea es cambiar el código que he comentado arriba por algo tipo:
1
2
3
4
5
6
7
8
9
10
11
<td class="alt1">
<input type="button" id="restar_$card[ref]" value="-" class="button" onclick="sumaresta_varios(resta,$original)"/>
</td>
<td class="alt1">
<input type="text" class="bginput" name="cantidad_$card[ref]" value="$original" />
</td>
<td class="alt1">
<input type="button" id="sumar_$card[ref]" value="+" class="button" onclick="sumaresta_varios(suma,$original)"/>
</td>
y crear una nueva función, controlando el 0 como valor mínimo y el 9 como valor máximo, para que sume o reste según el botón pulsado y siga manteniendo el control sobre la check (para que se marque si ha habido algún cambio) que sea algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function sumaresta_varios(valor,$original) {
if (valor == "suma")
{
if ($original<9)
{
$original++;
value= $original;
check_varios('$card[ref]');
}
}
else
{
if ($original>0)
{
$original--;
value= $original;
check_varios('$card[ref]');
}
}
}
siendo $original el valor original recuperado de tablas (el cual es el que puede modificar el usuario sumando o restando uno).
A parte de la suma me gustaría que siguiese siendo controlado el cambio de valor llamando a la función check_varios.
No tengo idea de php pero me dá que el planteamiento es erróneo, no sé yo si ese código puede funcionar y si cuando el usuario pinche el valor de submit, cada uno de los tres elementos del formulario va a pasar a la tabla el nuevo valor que se haya modificado.
¿Alguna sugerencia de alguna forma sencilla de hacerlo, ya sea añadiendo los botones "+" y "-" a la página o activando algún control de click derecho/izquierdo de ratón?
Muchas gracias por adelantado.
Valora esta pregunta


0