JQuery получить значение из динамически созданных входов с именем - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть форма, которая создается динамически в зависимости от выбранного значения, она делает различные текстовые вводы и в зависимости от того, является ли новый регистр значения пустыми, если не значения заполняются данными из базы данных MySQL, хочу отправить форму и сделать новую вставку, я пытаюсь получить все значения из входных данных, но никакие значения не возвращаются

$('input#send.clientenom').live('click', function (){
    var id_cliente = $('select#clienteslist.list').val();
    var contacto = $('.clientenom input[name="contacto"]').val();
    var cliente = $('.clientenom input[name="cliente"]').val();
    var direccion = $('.clientenom input[name="direccion"]').val();
    var colonia = $('.clientenom input[name="colonia"]').val();
    var estado = $('.clientenom input[name="estado"]').val();
    var cp = $('.clientenom input[name="cp"]').val();
    var telefono = $('.clientenom input[name="telefono"]').val();
    var email = $('.clientenom input[name="email"]').val();
    var acumulado = $('.clientenom input[name="acumulado"]').val();
    var tipocliente = $('.clientenom input[name="tipocliente"]').val();
    var prospecto = $('.clientenom input[name="prospecto"]').val();
    var nivel = $('.clientenom input[name="nivel"]').val();
    var proynom = $('.regname input[name="regproyname"]').val();
    alert(id_cliente, contacto, cliente, direccion, colonia, estado, cp, telefono, email, acumulado, tipocliente, prospecto, nivel, proynom);
            data = JSON.parse(data);     

    if(id_cliente == 0){

    var jqxhr = $.post("php/registrop.php",{"id_tipo":tipocliente, "id_prospecto":prospecto, "id_nivel":nivel, "contacto":contacto,"cliente":cliente, "direccion":direccion, "colonia":colonia, "estado":estado, "cp":cp, "telefono":telefono, "email":email, "acumulado":acumulado, "proyecto":proynom},function(data){
    if (typeof (data) == 'object' && JSON.parse ){

var html = '';
var len = data.length;
for (var i = 0; i< len; i++) {      
    var d = data[i];
    if(!d.error){
    if(d.Success == true){
html += d.Message;}
}else{
            alert(d.error);
    }}
    alert(d.Message);
    }else{

    alert("error no se puede parsear");
    }




        } )}else{
            var jqxhr = $.post("php/registrop.php",{"id_cliente":id_cliente, "proyecto":proynom},function(data){
                        data = JSON.parse(data);     
    if (typeof (data) == 'object' && JSON.parse ){

var html = '';
var len = data.length;
for (var i = 0; i< len; i++) {      
    var d = data[i];
    if(!d.error){
if(d.Success == true){
html += d.Message;
}

}else{
    alert(html);
    }}
            alert(d.error);
    alert("error no se puede parsear");
    }


        } )
            }
    });

предупреждение только для отладки, чтобы увидеть значения, но единственное значение, которое я получаю, это id_cliente val, никакое другое значение не добавляется, нужно ли связывать или делегировать входы? Кроме того, моя кнопка «Отправить» - это кнопка «Тип», а не «Отправить», поэтому она не будет перезагружать страницу заранее!

форма создается следующим образом:

  function selectedcliente(){
var id_clientea = $('select#clienteslist.list').val();
if($('form#info.customForm').length > 0 || id_clientea == ""){

    $('.clienteinfo').empty();
            }
if(id_clientea == 0){
var html = '';
html += '<form class="customForm" id="info">' +
'<div>' +
'<label for="contacto">Contacto</label>' +
'<input type="text" name="contacto" class="clientenom" value=""/><span id="contactoinfo">Nombre del contacto del cliente</span>' +
'</div>' +
'<div>' +
'<label for="cliente">Cliente</label>' +
'<input type="text" name="cliente" class="clientenom" value=""/><span id="clienteinfo">Nombre de la empresa/cliente</span>' +
'</div>' +
'<div>' +
'<label for="direccion">Direccion</label>' + 
'<input type="text" name="direccion" class="clientenom" value=""/><span id="direccioninfo">Direccion de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="colonia">Colonia</label>' +
'<input type="text" name="colonia" class="clientenom" value=""/><span id="coloniainfo">Colonia de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="estado">Estado</label>' +
'<input type="text" name="estado" class="estado" value=""/><span id="estadoinfo">Estado donde se encuentra la empresa</span>' +
'</div>' +
'<div>' +
'<label for="cp">Codigo Postal</label>' +
'<input type="text" name="cp" class="clientenom" value=""/><span id="cp">Codigo Postal del lugar de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="telefono">Telefono</label>' +
'<input type="text" name="telefono" class="clientenom" value=""/><span id="telefonoinfo">Telefono de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="email">E&ndash;mail</label>' +
'<input type="text" name="email" class="clientenom" value=""/><span id="emailinfo">E&ndash;mail de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="acumulado">Acumulado</label>' +
'<input type="text" name="acumulado" class="clientenom" value=""/><span id="acumuladoinfo">Total de todas las compras que se han hecho</span>' +
'</div>' +
'<div>' +
'<label for="tipocliente">Tipo del Cliente</label>' +
'<input type="text" name="tipocliente" class="clientenom" value=""/><span id="tipoclienteinfo">Que tipo de cliente es (Gobierno, Particular, Industrial, Distribuidor, Particular GR)</span>' +
'</div>' +
'<div>' +
'<label for="prospecto">Prospecto o Cliente</label>' +
'<input type="text" name="prospecto" class="clientenom" value=""/><span id="prospectoinfo">Prospecto o Cliente?</span>' +
'</div>' +
'<div>' +
'<label for="nivel">Nivel del Cliente</label>' +
'<input type="text" name="nivel" class="clientenom" value=""/><span id="nivelinfo">Nivel del cliente (depende del total acumulado)</span>' +
'</div>' +
'<div>' +
'<input type="button" class="clientenom" id="send" value="Registrar Proyecto" />' +
'</div>' +
'</form>'
;
        $('.clienteinfo').append(html);
}
else
{
var jqxhr = $.post('php/selectcliente.php',{"id_cliente":id_clientea}, function(data){
 data = JSON.parse(data);

 if(typeof(data) == 'object' && JSON.parse){
var html = '';
var len = data.length;
//alert(len);
for(var i = 0; i<len; i++){
var d = data[i];
    if(!d.error){

html += '<form class="customForm" id="info">' +
'<div>' +
'<label for="contacto">Contacto</label>' +
'<input type="text" name="contacto" class="clientenom" value="' + d.contacto + '"/><span id="contactoinfo">Nombre del contacto del cliente</span>' +
'</div>' +
'<div>' +
'<label for="cliente">Cliente</label>' +
'<input type="text" name="cliente" class="clientenom" value="' + d.cliente + '"/><span id="clienteinfo">Nombre de la empresa/cliente</span>' +
'</div>' +
'<div>' +
'<label for="direccion">Direccion</label>' + 
'<input type="text" name="direccion" class="clientenom" value="' + d.direccion + '"/><span id="direccioninfo">Direccion de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="colonia">Colonia</label>' +
'<input type="text" name="colonia" class="clientenom" value="' + d.colonia + '"/><span id="coloniainfo">Colonia de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="estado">Estado</label>' +
'<input type="text" name="estado" class="estado" value="' + d.estado + '"/><span id="estadoinfo">Estado donde se encuentra la empresa</span>' +
'</div>' +
'<div>' +
'<label for="cp">Codigo Postal</label>' +
'<input type="text" name="cp" class="clientenom" value="' + d.cp + '"/><span id="cp">Codigo Postal del lugar de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="telefono">Telefono</label>' +
'<input type="text" name="telefono" class="clientenom" value="' + d.telefono + '"/><span id="telefonoinfo">Telefono de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="email">E&ndash;mail</label>' +
'<input type="text" name="email" class="clientenom" value="' + d.correo + '"/><span id="emailinfo">E&ndash;mail de la empresa</span>' +
'</div>' +
'<div>' +
'<label for="acumulado">Acumulado</label>' +
'<input type="text" name="acumulado" class="clientenom" value="' + d.acumulado + '"/><span id="acumuladoinfo">Total de todas las compras que se han hecho</span>' +
'</div>' +
'<div>' +
'<label for="tipocliente">Tipo del Cliente</label>' +
'<input type="text" name="tipocliente" class="clientenom" value="' + d.tipo_cliente + '"/><span id="tipoclienteinfo">Que tipo de cliente es (Gobierno, Particular, Industrial, Distribuidor, Particular GR)</span>' +
'</div>' +
'<div>' +
'<label for="prospecto">Prospecto o Cliente</label>' +
'<input type="text" name="prospecto" clss="clientenom" value="' + d.prospecto + '"/><span id="prospectoinfo">Prospecto o Cliente?</span>' +
'</div>' +
'<div>' +
'<label for="nivel">Nivel del Cliente</label>' +
'<input type="text" name="nivel" class="clientenom" value="' + d.nivel + '"/><span id="nivelinfo">Nivel del cliente (depende del total acumulado)</span>' +
'</div>' +
'<div>' +
'<input type="button" class="clientenom" id="send" value="Registrar Proyecto" />' +
'</div>' +
'</form>'
;
    }else{
        alert(d.error); 
        }

    }
    $('.clienteinfo').append(html);
}else{
    alert("Is not object");

    }
    });
    }
}

1 Ответ

4 голосов
/ 23 декабря 2011

.clientenom input[name="nivel"] пытается найти input с name из nivel, то есть в элемент с классом clientenom.

Этоне тот случай в вашем HTML.Входные данные находятся за пределами .clientenom, у него есть сам этот класс.

Если у вас нет нескольких входов с одинаковым именем, просто отбросьте класс все вместе:

var contacto = $('input[name="contacto"]').val();

Если вам нужнокласс, это должно быть:

input.clientenom[name="nivel"]

или

input[name="nivel"].clientenom

РЕДАКТИРОВАТЬ: В аналогичной заметке, в большинстве случаев, нет причин делать что-то вроде select#clienteslist.list.Если у элемента есть идентификатор, просто используйте этот идентификатор, если только по какой-то причине вы хотите получить его только тогда, когда он является элементом выбора и имеет список классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...