Foros del Web » Programando para Internet » Javascript »

Boton mas y menos

Estas en el tema de Boton mas y menos en el foro de Javascript en Foros del Web. Holasss, por favor una ayuda, tengo muchas de estas estructuras ya que varia la cantidad de acuerdo a la cantidad de registros que se listan ...
  #1 (permalink)  
Antiguo 14/11/2013, 11:08
 
Fecha de Ingreso: mayo-2010
Mensajes: 22
Antigüedad: 13 años, 11 meses
Puntos: 0
Boton mas y menos

Holasss, por favor una ayuda, tengo muchas de estas estructuras ya que varia la cantidad de acuerdo a la cantidad de registros que se listan desde la base de datos...osea puedo tener solo una como puedo tener 20 ...
Código HTML:
Ver original
  1. <button class="btn" type="button" id="menos">-</button>
  2. <input id="cantidad" type="text" style="text-align: center;" value="1">
  3. <button class="btn" type="button" id="mas">+</button>

quisiera que me ayuden con una funcion que al hacerle click al boton #mas, incremente en 1 en #cantidad, las veces que se hayan dado click y hacer lo contrario cuando se de click en #menos, pero que solo llegue a 1. Pero esto debera ser independientemente en cada estructura. Nose si deberia ser una funcion por cada estructura ya que se debe indicar el id en la funcion o si hay alguna forma de hacer una sola funcion con la que funcionen todas esas estructuras que tengo.
Ojala m puedan ayudar... mil gracias desde ya
  #2 (permalink)  
Antiguo 14/11/2013, 11:34
 
Fecha de Ingreso: mayo-2010
Mensajes: 22
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Boton mas y menos

he hecho esta funcion:
Código HTML:
Ver original
  1. <html>
  2. <body>
  3. <script language="javascript">
  4. var i = 1;
  5. function contadormas(){
  6.     i = i + 1;
  7.     var cant = document.getElementById("cantidad");
  8.     cant.value = i;
  9.     if(cant.value == 1){
  10.             i=1;
  11.             cant.value="unica";
  12.     }
  13. }
  14. function contadormenos(){
  15.     if(i>=2){
  16.         i = i - 1;
  17.         var cant = document.getElementById("cantidad");
  18.         cant.value = i;
  19.         if(cant.value == 1){
  20.             i=1;
  21.             cant.value="unica";
  22.         }
  23.     }
  24. }
  25. <button class="btn" type="button" id="menos" onclick="javascript: contadormenos()">-</button>
  26. <input id="cantidad" type="text" style="text-align: center;" value="1">
  27. <button class="btn" type="button" id="mas" onclick="javascript: contadormas()">+</button>
  28. </body>
  29. </html>

Con esto ya puedo aumentar o disminuir haciendo click en los botones mas o menos, le aumente una validacion para que cuando llegue a 1 aparezca "unica".

Pero bueno con esto resolvi mi primer problema, ahora mi otro problema es: asi como estan las funciones tendria que hacer una nueva por cada grupo de boton/input/boton que tenga, lo cual me daria un codigo tremendo y por otro lado no puedo saber cuantos grupos boton/input/boton voy a tener, ya que eso dependera del listado que obtenga de la base de datos...
Por favor una ayuda... gracias..
  #3 (permalink)  
Antiguo 14/11/2013, 12:15
 
Fecha de Ingreso: mayo-2010
Mensajes: 22
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Boton mas y menos

Jajaja gracias a todos por su inmensa ayuda xD jajaja... bueno los masters han de estar ocupados y este foro me ha ayudado mucho... encontre la solucion a mi problema si alguien lo necesita aqui lo dejo:
Código HTML:
Ver original
  1. <html>
  2. <body>
  3. <script language="javascript">
  4. var i;
  5. function contadormas(iddeinput){
  6.     var cant = document.getElementById(iddeinput);
  7.     if(cant.value>=2){
  8.         i = cant.value;
  9.     }else{
  10.         if(cant.value == "unica"){i = 1;}
  11.     }
  12.     i++;
  13.     cant.value = i;
  14. }
  15. function contadormenos(iddeinput){
  16.     var cant = document.getElementById(iddeinput);
  17.     if(cant.value>2){
  18.         i = cant.value;
  19.         i--;
  20.         cant.value = i;
  21.     }else{
  22.         cant.value="unica";
  23.     }
  24. }
  25. <button class="btn" type="button" id="menos" onclick="javascript: contadormenos('cantidad1')">-</button>
  26. <input id="cantidad1" type="text" style="text-align: center;" value="unica">
  27. <button class="btn" type="button" id="mas" onclick="javascript: contadormas('cantidad1')">+</button>
  28.  
  29. <button class="btn" type="button" id="menos" onclick="javascript: contadormenos('cantidad2')">-</button>
  30. <input id="cantidad2" type="text" style="text-align: center;" value="unica">
  31. <button class="btn" type="button" id="mas" onclick="javascript: contadormas('cantidad2')">+</button>
  32.  
  33. <button class="btn" type="button" id="menos" onclick="javascript: contadormenos('cantidad3')">-</button>
  34. <input id="cantidad3" type="text" style="text-align: center;" value="unica">
  35. <button class="btn" type="button" id="mas" onclick="javascript: contadormas('cantidad3')">+</button>
  36.  
  37. <button class="btn" type="button" id="menos" onclick="javascript: contadormenos('cantidad4')">-</button>
  38. <input id="cantidad4" type="text" style="text-align: center;" value="unica">
  39. <button class="btn" type="button" id="mas" onclick="javascript: contadormas('cantidad4')">+</button>
  40. </body>
  41. </html>

a tener en cuenta que yo creo el grupo boton/input/boton con un for dependiendo la cantidad de elementos que me lista la consulta a la base de datos y les voy dando como id=cantidad+i para que se enumeren cantidad1, cantidad2, etc... un saludo a todos.
  #4 (permalink)  
Antiguo 14/11/2013, 12:17
 
Fecha de Ingreso: mayo-2010
Mensajes: 22
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Boton mas y menos

no le pongo solucionado, porque aun me gustaria q un master lo vea y me diga si esa es la mejor manera de resolver mi problema o si hay algun error o me dan algun consejo, por favor digan algooooo jaja y gracias
  #5 (permalink)  
Antiguo 14/11/2013, 12:55
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Boton mas y menos

A los elementos button no tienes que ponerles el atributo 'type="button"'.
El código, parece que funciona, pero a mi no me gusta nada que se meta código javascript dentro de los elementos HTML, como por ejemplo haces con el atributo "onclick" (al igual que tampoco nadie recomienda que se meta estilos CSS en ellos).
Si tu código HTML crece, y/o necesitas modificar códigos en el futuro, si sigues así será una locura hacerlo.

Yo lo cambiaría por:
http://jsfiddle.net/5WdvA/
Código HTML:
Ver original
  1. <button id="btn1">-</button><input type="text" id="txt" /><button id="btn2">+</button>
Código Javascript:
Ver original
  1. window.onload=function(){
  2.     var sumar=function(cantidad,txt){
  3.         txt.value=(!isNaN(txt.value) && txt.value!="")?parseInt(txt.value)+cantidad:0;
  4.     }
  5.     var SUMADOR1={
  6.         btnResta: document.getElementById("btn1"),
  7.         btnSuma: document.getElementById("btn2"),
  8.         txt: document.getElementById("txt")
  9.     };
  10.     SUMADOR1.btnResta.onclick=function(){ sumar(-1,SUMADOR1.txt); };
  11.     SUMADOR1.btnSuma.onclick=function(){ sumar(1,SUMADOR1.txt); };
  12. }
  #6 (permalink)  
Antiguo 20/11/2013, 12:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 22
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Boton mas y menos

marlanga mil gracias por tu respuesta, no he respondido antes ya que estuve ocupado, pero volviendo al tema: he revisado lo que me has dicho y llegue a esta solucion, haber si me ayudas con algun consejo...
La solucion que me mandast era muy buena, pero recuerda que yo voy a tener "n" cantidad de grupos botonMenos/input/botonMas, ya que esto va a ser dependiendo de la cantidad de registros en la base de datos. Por ello necesito una funcion generica, lo que he hecho es hacer una llamada por clases y no por id..

Código HTML:
Ver original
  1. <div>
  2. <button class="resta">-</button>
  3. <input class="qwerty" value="unica">
  4. <button class="suma">+</button>
  5. </div>

Código Javascript:
Ver original
  1. var i;
  2.     $('.resta').click(function(){
  3.         var padre = $(this).parent("div");
  4.         var valor = $(padre).children(".qwerty").val();
  5.         if(valor>2){
  6.             i = valor;
  7.             i--;
  8.             $(padre).children(".qwerty").val(i);
  9.         }else{
  10.             $(padre).children(".qwerty").val("unica");
  11.         }
  12.     })
  13.    
  14.     $('.suma').click(function(){
  15.         var padre = $(this).parent("div");
  16.         var valor = $(padre).children(".qwerty").val();
  17.         if(isNaN(valor) && valor>1){
  18.             i = valor;
  19.         }else{
  20.             if(valor == "unica"){i = 1;}
  21.         }
  22.         i++;
  23.         $(padre).children(".qwerty").val(i);
  24.     })

Desde ya gracias por cualquier comentario.
  #7 (permalink)  
Antiguo 24/11/2013, 11:38
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Boton mas y menos

Pues se pone un FOR y se crean varios. Uso una técnica avanzada de javascript, closures, asi que atento.

Código HTML:
Ver original
  1. <button id="btnm0">-</button><input type="text" id="txt0" /><button id="btnp0">+</button><br/>
  2. <button id="btnm1">-</button><input type="text" id="txt1" /><button id="btnp1">+</button><br/>
  3. <button id="btnm2">-</button><input type="text" id="txt2" /><button id="btnp2">+</button><br/>
  4. <button id="btnm3">-</button><input type="text" id="txt3" /><button id="btnp3">+</button><br/>
  5. <button id="btnm4">-</button><input type="text" id="txt4" /><button id="btnp4">+</button><br/>
  6. <button id="btnm5">-</button><input type="text" id="txt5" /><button id="btnp5">+</button><br/>

Código Javascript:
Ver original
  1. window.onload=function(){
  2.     var sumar=function(cantidad,txt){
  3.         txt.value=(!isNaN(txt.value) && txt.value!="")?parseInt(txt.value)+cantidad:0;
  4.     }
  5.     var SUMADORES=[];
  6.     for (var i=0;i<6;i++)
  7.     {
  8.         var obj= {
  9.             btnResta: document.getElementById("btnm"+i),
  10.             btnSuma: document.getElementById("btnp"+i),
  11.             txt: document.getElementById("txt"+i)
  12.         };
  13.         (function (aux) {
  14.             aux.btnResta.onclick=function(){ sumar(-1,aux.txt); };
  15.             aux.btnSuma.onclick=function(){ sumar(1,aux.txt); };
  16.         })(obj);
  17.         SUMADORES.push(obj);
  18.     }
  19. }

Demo:
http://jsfiddle.net/5WdvA/1/

Etiquetas: boton, funcion, input, menos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.