JavaScript - Ayuda con funcion (Agregar y eliminar inputs dinamicos)

 
Vista:
sin imagen de perfil

Ayuda con funcion (Agregar y eliminar inputs dinamicos)

Publicado por Rodrigo (2 intervenciones) el 21/07/2016 17:50:47
Hola a todos,

Les cuento, e ocupado una funcion que encontre en este mismo foro, y me ha servido bastante, pero necesito realizar una modificacion, y realmente se muy poco de javascript, por lo que me ha sido imposible lograr lo que necesito.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function define()
{
    $("#add").unbind().click(function() {
        var intId = $('.products > #nombre').length + 1;
        var fieldWrapper = $("<div class=\"products\" id=\"field" + intId + "\"/>");
        var fName = $("<input type=\"text\" id=\"nombre\" name=\"data[Product]["+ intId +"][nombre]\" class=\"form-control\" placeholder=\"Detalle del producto\" style=\"width:30%;\" />");
        var fType = $("<input type=\"text\" id=\"val1\" name=\"data[Product]["+ intId +"][cantidad]\" class=\"form-control\" placeholder=\"Cantidad\" style=\"width:20%;\" />");
        var fType2 = $("<input type=\"text\" id=\"val2\" name=\"data[Product]["+ intId +"][precio]\" class=\"form-control\" placeholder=\"Valor\" style=\"width:20%;\" />");
        var removeButton = $("<input type=\"button\" class=\"btn btn-danger btn-fill\" style=\"width:15%;\" value=\"Eliminar\" />");
 
        removeButton.click(function() {
            $(this).parent().remove();
            multInputs();
        });
 
        fieldWrapper.append(fName);
        fieldWrapper.append(fType);
        fieldWrapper.append(fType2);
        fieldWrapper.append(removeButton);
        $("#buildyourform").append(fieldWrapper);
        define();
    });
}

Lo que realiza esta funcion, es agregar inputs dinamicamente, y a su vez poder eliminar cada uno de estos, hasta aqui todo perfecto, pero cuando inicio mi formulario, ya existen inputs creados, los cuales se crearan a partir de los datos que tenga en mi tabla productos.
Lo que necesito hacer, es poder eliminar los inputs que se crearon a partir de la tabla products, tal cual lo hago con los creados dinamicamente.

Ojala me haya podido explicar y que alguien me pueda ayudar.

Saludos a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ayuda con funcion (Agregar y eliminar inputs dinamicos)

Publicado por xve (2100 intervenciones) el 21/07/2016 20:47:16
Hola Rodrigo, por que razón no te los eliminad? entiendo que una vez cargues la pagina, si llamas a la función define() te funcionara igual por cada linea de la tabla, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con funcion (Agregar y eliminar inputs dinamicos)

Publicado por Rodrigo (2 intervenciones) el 22/07/2016 16:09:08
No, porque no son input creados desde la funcion, por decirlo de alguna manera, son creados "manualmente".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ayuda con funcion (Agregar y eliminar inputs dinamicos)

Publicado por Vainas (258 intervenciones) el 24/07/2016 20:38:37
Buenas:

El problema esta que se asigna el onclick dentro de la function y pues no queda asignado a los que ya se encuentran pintados en la pagina.

Se me ocurre que le asignes la funcion a una etiqueta por encima de el boton remove e incluso por encima del fieldWrapper de este modo:

esto tiene que estar fuera de la funcion define:

1
2
3
$("#buildyourform").on('click', removeButton-class, function() {
   /// tu codigo aqui del remove.
});

y al boton asignale la clase "removeButton-class"

1
var removeButton = $("<input type=\"button\" class=\"btn btn-danger btn-fill\ removeButton-class"

la explicacion de esto es que asignas el evento onclick en realidad al id con "buildyouform" pero fijate que por propagacion (si buscas algo pondra en internet que los eventos hacen "bubbling and propagation") es decir que se hace click en el form o div pero se propaga a los botones que estan mas abajo con el selector que se ha asignado esten o no creados asi que si hay botones se ejecutan y si se crean nuevos pues se propagara a ellos.

Lo siento la explicacion es un poco mala pero espero que entiendas por encima lo que sucede.

Espero que ayude.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar