Bom dia, tenho uma tabela pai filho, e gostaria de saber se é possível obter o index dela no JS do formulário assim como é possível no validate por exemplo pela função " form.getChildrenIndexes("AdicionaItens");"
Já vi um pessoal aqui do forum usando
"$("input[id^='campo1_']").each(function(index, value){"
mas não consegui/entendi como implementar.
Seria de grande ajuda para os projetos que estou trabalhando no momento se alguém pudesse me explicar o uso e acredito que seria de grande ajuda para todos no geral, por isso pretendo documentar certinho esse tópico.
Gabriel, sabendo que a estrutura dos campos filhos é nome do campo + "_" (3 underlines), você pode fazer da seguinte forma:
$('[name^="campoFilho___"'); //isso lhe trará todos os campos filhos deste formulário. Após isso, você por implementar um for, podendo ser um foreach.
for(var i = 0; i < $('[name^="campoFilho___"').length; i++){
//Aqui percorrerá todos os itens.
//Busca o nome do campo pra facilitar a identificação
var nomeCampo = $('[name^="campoFilho___"')[i].name;
//Busca o separador do indice, após encontrar, como posiciona no início, pulamos 3 posições e buscamos o restante.
var indice = nomeCampo.substr(nomeCampo.indexOf("___")+3);
alert(indice);
}
Isso pode te ajudar a entender, Gabriel, existem várias formas, mas acredito que essa é a mais didática!
Boa sorte, qualquer dúvida, é só avisar!
desta forma, pelo .lenght eu já tinha feito, mas encontrei dificuldades, visto que muitas vezes uma linha é excluida e acaba tendo “furos”, por isso queria algo mais proximo a um index do que um length.
Esquece isso Alef, eu entendi a função do Length na sua função, é apenas um medidor para saber quando parar o for, obrigado, acho q isso vai me ajudar muito
Exato, o length é somente para saber quantos elementos e e garantir a iteração em cada um deles. Coisa que o index é independente, por isso a necessidade de buscar o indice após identificar o nome.
Ou seja, não é o length ou o I que define o indice, mas sim a busca dele após o seu nome seguido dos 3 undelines.