Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Crear input no funciona en IE

Estas en el tema de Crear input no funciona en IE en el foro de Javascript en Foros del Web. Buenas amigos, les quiero consultar lo siguiente: Tengo un formulario de contacto con una función provista de un botón para agregar campos de texto. Al ...
  #1 (permalink)  
Antiguo 20/05/2013, 09:56
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Crear input no funciona en IE

Buenas amigos, les quiero consultar lo siguiente:

Tengo un formulario de contacto con una función provista de un botón para agregar campos de texto.

Al necesitar que solo se puedan agregar 9 campos al que viene por defecto, necesité un JS para poder hacer el cálculo.
El problema es que no funciona en internet explorer y la mayoría de los usuarios de este form lo tienen.

Paso los códigos:

El boton en HTML:
Código HTML:
<div id="p_pub">
   <h1><p>Productos a publicar:</p></h1>
    <fieldset id="fiel"><input name="newsprod" type="text" id="newsprod1" placeholder="C&oacute;digo, especificaciones, part number." required="required"/>

<!--Este es el botón para crear el campo, en el JS también se incluye un botón para poder borrar el input creado-->
<input type="button" id="otro" value="Otro" onclick="crear(this)" />
    <input name="cantprod" type="hidden" value="1" id="cantprod" />

  <p>&nbsp;</p>
   <h2>Hasta 10 productos, los 9 campos restantes <strong>no son obligatorios</strong>.</h2>
    </fieldset>
  </div> 
El Script
Código:
num=item=0;
function crear(obj) {
 
  num++;
  if(item<9){
    item++;
    fi = document.getElementById('fiel'); // 1
    contenedor = document.createElement('div'); // 2
    contenedor.id = 'div'+num; // 3
    fi.appendChild(contenedor); // 4
    fi.insertBefore(contenedor,obj); // 4

    ele = document.createElement('input'); // 5
    ele.id = 'newsprod1';
    ele.type = 'text'; // 6
    ele.name = 'fil'+num; // 6
    ele.placeholder = 'C\u00F3digo, especificaciones, part number'; // 6

    contenedor.appendChild(ele); // 7

    ele = document.createElement('input'); // 5
    ele.id = 'borrar';
    ele.type = 'button'; // 6
    ele.value = 'Borrar'; // 8
    ele.name = 'div'+num; // 8
    ele.placeholder = 'C\u00F3digo, especificaciones, part number'; // 6

    ele.onclick = function () {borrar(this.name); if(item==9)$("#otro").removeClass("displaynone"); item--; $('#cantprod').attr("value", item+1);} // 9

    contenedor.appendChild(ele); // 7

    if(item==9){
        $("#otro").addClass("displaynone");
    }

    $('#cantprod').attr("value", item+1);

}

}
function borrar(obj) {
  fi = document.getElementById('fiel'); // 1 
  fi.removeChild(document.getElementById(obj)); // 10
}
¡Desde ya, Muchas gracias por leer! Espero ansioso sus comentarios.
Saludos-
  #2 (permalink)  
Antiguo 21/05/2013, 06:18
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Crear input no funciona en IE

hola alguien me puede dar una mano? por favor?
  #3 (permalink)  
Antiguo 21/05/2013, 16:39
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 12 años, 10 meses
Puntos: 344
Respuesta: Crear input no funciona en IE

Hola,

Depurando me he dado cuenta de que ya existe una variable global llamada item (es una función).

Tienes dos formas de resolverlo:

1. Cambiar el nombre de la variable item.

2. Usar var

Código Javascript:
Ver original
  1. var item = 0;


EDITO: Mejor usa la 1ª forma, con la 2ª te estás cargando la función llamada item

Un saludo.

Última edición por alexg88; 21/05/2013 a las 16:56
  #4 (permalink)  
Antiguo 22/05/2013, 08:21
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Crear input no funciona en IE

MUCHAS GRACIAS !!!! Lo pude solucionar cambiando item a proditem!!!

Etiquetas: form, input
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 05:47.