Foros del Web » Programando para Internet » Javascript »

Problema sumando en un input

Estas en el tema de Problema sumando en un input en el foro de Javascript en Foros del Web. Hola a todos, lo primero pongo el código que estoy utilizando: Cita: <script> function sumaOrden(id){ //sumo un +1 al grosor resultado = parseInt(document.getElementByID(id).value) + 1; ...
  #1 (permalink)  
Antiguo 11/07/2005, 13:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 20 años, 4 meses
Puntos: 4
Problema sumando en un input

Hola a todos,
lo primero pongo el código que estoy utilizando:
Cita:
<script>
function sumaOrden(id){
//sumo un +1 al grosor
resultado = parseInt(document.getElementByID(id).value) + 1;
document.getElementByID(id).value = resultado;
}
function restaOrden(id){
//a menos q el grosor ya sea 0 le quito una unidad
if(parseInt(document.getElementByID(id).value)!=0) {
resultado = parseInt(document.getElementByID(id).value) - 1;
document.getElementByID(id).value = resultado;
}
}
</script>
<input name='orden1' id='orden1' type='text' size='3' maxlength='3' value='1' disabled>[<a href='#' onClick='sumaOrden(orden1);'>+</a>] [<a href='#' onClick='restaOrden(orden1);'>-</a>]
La parte en negrita la genero automáticamente con PHP, el problema está en que quizás despues se repita lo mismo pero con orden2, orden3... entonces cambia el id y la forma de llamar a la función.

Puedo tener dos problemas:
- el primero es que estoy intentando acceder a un input sin la etiqueta form, no se si esto se puede, por eso lo intento con getElementById
- aún poniendo la etiqueta form y accediendo con el nombre del form y del input (los mismos) me detecta la cadena document.id.id.value como si fuera el objeto en vez de substituir id por lo que sea.

Espero haberme explicado suficientemente.
Saludos y gracias!
__________________
sergiold
  #2 (permalink)  
Antiguo 11/07/2005, 16:06
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 20 años, 4 meses
Puntos: 4
Si no esta del todo claro decirmelo para intentar mejorar la explicacion de la situacion. Pero es que me estoy volviendo loco buscando algo que se aprezca a lo que quiero por estos foros y en google y no encuentro nada que me ilumine.
Saludos y gracias,
__________________
sergiold
  #3 (permalink)  
Antiguo 11/07/2005, 16:41
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Prueba a poner:

onClick='sumaOrden("orden1");'

Es decir, entrecomilla el id al llevartelo con la function.

A ver qué tal ahora!

También puedes usar sólo una de las dos functions añadiéndole otro valor. Así:

function sumaOrden(id,incremento){
//sumo el incremento al grosor
resultado = parseInt(document.getElementByID(id).value) + incremento;
document.getElementByID(id).value = resultado;
}

Y a la hora de llamarla haces:
onClick='sumaOrden("orden1",1);'
o
onClick='sumaOrden("orden1",-1);'

Según sea.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 11/07/2005, 17:10
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 20 años, 4 meses
Puntos: 4
Gracias KarlanKas por contestar,
aun poniendo las comillas me sigue diciendo:

Cita:
El objeto no acepta esta propiedad o método.
Sin embargo ahora me reconoce el objeto así que ahora solo queda solucionar el primer problema. El segundo ya esta.

Muchas gracias!
__________________
sergiold
  #5 (permalink)  
Antiguo 12/07/2005, 00:30
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Bueno, pues había que ponerle la etiqueta form. Ya que si no el atributo value no le valía.

Prueba ahora con esto:

Código PHP:
<script>
function 
sumaOrden(id,incremento){
//sumo incremento al grosor
resultado parseInt(document['pepe'][id].value);
resultado+=(resultado<&& incremento==-1)?0:incremento;
document['pepe'][id].value resultado;
}

</script>
<form name="pepe">
<input name='orden1' id='orden1' type='text' size='3' maxlength='3' value='1' disabled>
[<a href='#' onClick='sumaOrden("orden1",1);'>+</a>] [<a href='#' onClick='sumaOrden("orden1",-1);'>-</a>]
</form> 
Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 12/07/2005, 00:35
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Ya sé porque no lo admitia. Era porque tenias puesto el atributo disabled. Prueba a poner Readonly que para lo que quieres es lo que debes usar: lo muestra pero no lo deshabilita:

Código PHP:
<script>
function 
sumaOrden(id,incremento){
//sumo incremento al grosor
campo=document.getElementById(id);
resultado parseInt(campo.value);
resultado+=(resultado<&& incremento==-1)?0:incremento;
campo.value resultado;
}

</script>

<input name='orden1' id='orden1' type='text' size='3' maxlength='3' value='1' readonly>
[<a href='#' onClick='sumaOrden("orden1",1);'>+</a>] [<a href='#' onClick='sumaOrden("orden1",-1);'>-</a>] 
A ver que te parece esta pequeña mejora!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 12/07/2005, 03:35
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 20 años, 4 meses
Puntos: 4
PERFECTO KarlanKas!

Es justo lo que necesitaba.

Muchas gracais de nuevo!
Un saludo,
__________________
sergiold
  #8 (permalink)  
Antiguo 12/07/2005, 03:38
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
De nada, hombre!

Hoy por tí y mañana por mí!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 21:11.