Foros del Web » Programando para Internet » Javascript »

Agregar Campos formulario con eventos de forma dinamica

Estas en el tema de Agregar Campos formulario con eventos de forma dinamica en el foro de Javascript en Foros del Web. Hola. Estoy tratando de agregar unos campos a un formulario de forma dinamica, los campos se agregan pero necesito que algunos tengan en evento OnKeyPress ...
  #1 (permalink)  
Antiguo 09/02/2007, 07:59
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 19 años, 10 meses
Puntos: 1
Agregar Campos formulario con eventos de forma dinamica

Hola.

Estoy tratando de agregar unos campos a un formulario de forma dinamica, los campos se agregan pero necesito que algunos tengan en evento OnKeyPress el cual no funciona.

Mi Codigo
Código:
var n=1;
function add(form) {
 n++;
  tabla = document.getElementById('tabla');
  fila = document.createElement('tr');
  fila.id='row_'+n;

  celda = document.createElement('td');
  celda.align='center';

  fila.appendChild(celda);
  code=document.createElement('input');
  code.type='text';
  code.name='codigo_'+n;
  code['OnKeyPress'] = function() {return OnlyNumber(event)}
  code.size='10';
  code.maxLength='10';
 // code['blur'] = function() {return acceptNum(event)};
  celda.appendChild(code);

  celda = document.createElement('td');
  celda.align='center';
  fila.appendChild(celda);
  art=document.createElement('input');
  art.type='text';
  art.name='articulo_'+n;
  art.size='22';
  art.readonly='readonly';
  celda.appendChild(art);

  celda = document.createElement('td');
  celda.align='center';
  fila.appendChild(celda);
  cant=document.createElement('input');
  cant.type='text';
  cant.name='cantidad_'+n;
  cant.size='3';
  cant.maxLength='3';
  cant['onkeypress'] = function() {return OnlyNumber(event)};
  celda.appendChild(cant);

  celda = document.createElement('td');
  celda.align='center';
  fila.appendChild(celda);
  unit=document.createElement('input');
  unit.type='text';
  unit.name='unitario_'+n;
  unit.size='10';
  unit.readonly='readonly';
  celda.appendChild(unit);

  celda = document.createElement('td');
  celda.align='center';
  fila.appendChild(celda);
  totl=document.createElement('input');
  totl.type='text';
  totl.name='total_'+n;
  totl.size='10';
  totl.readonly='readonly';
  celda.appendChild(totl);

  celda = document.createElement('td');
  celda.align='center';
  fila.appendChild(celda);
  text=document.createElement('text');
  text.innerHTML = "<a href=\"javascript:DeleteRow('row_"+n+"')\"> Eliminar</a>";

  celda.appendChild(text);

  tabla.appendChild(fila);

       form.registros.value=n;
  }
trato de llamar el evento usando code['OnKeyPress'] = function() {return OnlyNumber(event)} pero no me funciona.

Tambien trata llamandolo code.OnKeyPress = function() {return OnlyNumber(event)} o si no code.OnKeyPress = 'return OnlyNumber(event)' los cuales obviamente tampoco funcionaron

el problema no esta en la funcion OnlyNumber() porque si lo llamo de forma tradicional funciona, pero igual aqui esta el codigo

Código:
function OnlyNumber(evt){
     var nav4 = window.Event ? true : false;
     var key = nav4 ? evt.which : evt.keyCode;
          return (key <= 13 || (key >= 48 && key <= 57));
   }
Alguien ve el error?

Saludos y desde ya gracias
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #2 (permalink)  
Antiguo 04/07/2008, 14:25
 
Fecha de Ingreso: julio-2006
Ubicación: 127.0.0.1
Mensajes: 14
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Agregar Campos formulario con eventos de forma dinamica

hola para utilizar el evento onKeyPress tenes que utilizar el siguiente codigo, creando un control input

var control=document.createElement("input");
eval('control.onkeypress= function(){ ACA PONE LO QUE QUERES QUE HAGA LA FUNCION O EL NOMBRE DE OTRA FUNCION }')

espero que te sirva,
saludos

MAT
  #3 (permalink)  
Antiguo 04/07/2008, 17:31
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Agregar Campos formulario con eventos de forma dinamica

Hola k-seraph:

Lo que te propone msantilliyo es complicarse la vida, también puedes hacer eval("eval(\"eval('control.onkeypress= function(){ (..) }')\")");
Pero es añadir código por añadir.

Creo que lo que estás buscando es un simple:
Código PHP:
code.OnKeyPress OnlyNumber

Un saludo
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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:47.