Colocar limite de linhas na tabela pai x filho

Boa tarde, alguem sabe como faz para limitar uma quantidade de linha da tabela pai x filho para 1? Exemplo; apos clicar em adicionar, adiciono as linhas A, B e C dentro da tabela pai x filho e quando vou adicionar B novamente, eu queria que nao permitisse, pois ja tem o B la se eu tentar adicionar B mais de uma vez, nao mostrar na tabela pai x filho, permitir somente 1 campo (linha) para B. Tentei fazer da forma abaixo e nao consegui, se alguem puder ajudar, ficaria grato. Obrigado.


function AddChild(tabela){    

var index = $("#indicador").val();
for (i=1; i<=index; i++) {
var desc = $("#idDesc___"+i).val();  
if (desc == "COMBUSTIVEIS") { 

var row = wdkAddChild(tabela); //Adicionar filhos

else {    
FLUIGC.toast("#idDesc___" + row,{
title: '',
message: "Número máximo de B é 1",
type: 'danger'
      });
}

Ficou meio confusa sua pergunta, você quer adicionar apenas 3 linhas? O que seriam essas linhas A,B e C? No que o $(“#idDesc_”+i).val() implica?

Bom dia Guilherme, eu quero que so de para adicionar uma vez a linha que contenha a descriçao “COMBUSTIVEIS”, se tentar adicionar denovo nao dara

As linhas A, B e C são so um exemplo do que eu queria.
Veja na imagem abaixo:

A linha A, é onde esta COMBUSTIVEIS
A linha B, é onde esta ALIMENTAÇÃO

para entender melhor, em vez de linha A, entenda como linha 1 e linha B, como linha 2 e assim por diante…

Eros, atualizei meu comentário com um código. Verifique se te atende.

Teste o código abaixo: (só fiquei na dúvida se é para adicionar um filho somente quando for igual a COMBUSTIVEIS ou não)


function AddChild(tabela) {
    var count = 0;

    $("input[id^='idDesc___']").each(function(index, value){
        if ($(this).val() == "COMBUSTIVEIS") {
            count++;
            return false;
        }
    });

    if (count > 0) { // SE já existe "COMBUSTIVEIS"
        FLUIGC.toast({
            title: '',
            message: 'Número máximo de B é 1',
            type: 'danger'
        });
    } else {
        wdkAddChild(tabela); //Adicionar filhos
    }
}

Eros, segue atualização. Verifique se consegue entender da forma como fiz e se te atende:


// #### Campos para adicionar itens ####
<div class="row">
    <div class="form-group col-xs-12 col-sm-12 col-md-3 col-lg-3">
        <label class="control-label" for="txt_codProduto">Cod. Produto</label>
        <input type="text" class="form-control" name="txt_codProduto" id="txt_codProduto">
    </div>
    <div class="form-group col-xs-12 col-sm-12 col-md-8 col-lg-8">
        <label class="control-label" for="txt_descProduto">Desc. Produto</label>
        <input type="text" class="form-control" name="txt_descProduto" id="txt_descProduto">
    </div>
    <div class="form-group col-xs-12 col-sm-12 col-md-8 col-lg-8">
        <label class="control-label">&nbsp;</label>
        <button type="button" class="btn btn-primary" id="btn_addProduto">Adicionar</button>
    </div>
</div>

// #### TABLE PAI X FILHO CRIADA ####
<div class="row">
    <table class="table table-hover table-condensed table-striped" id="tbProdutos" tablename="tbProdutos" noaddbutton=true addbuttonlabel="Adicionar produto" addbuttonclass="btn btn-primary" nodeletebutton=true >
        <thead>
            <tr>
                <th>Codigo</th>
                <th>Produto</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <input type="text" class="form-control" name="txt_tbCodigo" id="txt_tbCodigo" readonly="readonly">
                </td>
                <td>
                    <input type="text" class="form-control" name="idDesc" id="idDesc" readonly="readonly">
                </td>
            </tr>
        </tbody>
    </table>
</div>


// #### JAVASCRIPT ####
$("#btn_addProduto").on("click", function(e){

    $("input[id^='idDesc___']").each(function(index, value){
        if ($(this).val() != "COMBUSTIVEIS") {
            wdkAddChild("tbProdutos"); //Adicionar filhos

            // newId -> é a sequência do pai x filho que retorna da função wdkAddChild
            // alimenta Pai x Filho
            $("#txt_tbCodigo___" + newId).val($("#txt_codProduto").val());
            $("#idDesc___" + newId).val($("#txt_descProduto").val());

            // Limpa os campos após inseridos
            $("#txt_codProduto").val("");
            $("#txt_descProduto").val("");
        } else {
            FLUIGC.toast({
                title: '',
                message: 'Número máximo de B é 1',
                type: 'danger'
            });
        }
    });

});

Bom dia Gabriel, obriagado por ajudar…
Eu queria que so desse para adicionar a linha que contem “COMBUSTIVEIS” uma vez, as outras podem ser adicionadas normalmente.
Usei este codigo e quando clico botão adicionar itens, nd acontece

Então o IF tem que ficar assim: if ($(this).val() != “COMBUSTIVEIS”) {

Editei o código, tente novamente.

Eu tb tentei com o sinal de diferente e continua nao adicionando as linhas
Quando clico em adicionar, nao adiciona nenhuma
Veja na imagem, que quando nao utilizo estes comandos, as linhas sao adicionadas normalmente

O campo onde está a descrição “COMBUSTIVEIS” está com ID? como está a estrutura do campo? Ou está somente com name?

O campo abaixo de descrição esta com o id e name iguais → idDesc e esta dentro da tabela pai x filho
As linhas que contem combustiveis e alimentação ali na imagem aparecem apos eu clicar em pesquisar

Quando clico em adicionar itens e coloco alimentação por exemplo, vou no console para inspencionar e digito
$(“#idDesc___1”).val();

ai no segundo seria
$(“#idDesc___2”).val();
e assim por diante…

Quando você clica em “Adicionar Itens” é chamada a função AddChild? Ou quando você clica em “Pesquisar”?
Tem como mandar a estrutura da table pra dar uma olhada?

Quando clico em Adicionar itens chama a função Addchild, o pesquisar é so para adicionar o campo COMBUSTIVEL ou Alimentação dentro da descrição

Esse trecho $(“input[id^=‘idDesc___’]”).each( está com problema, pois se houver mais de uma linha ele irá para a próxima iteração e adicionará a linha da mesma forma, podendo adicionar até mais do que uma linha. Ao cair no else você precisa de uma tratativa para encerrar o laço.

Botão de adicionar itens, que fica em cima da tabela pai x filho


< div class="row" id="divBtnItens" > 
< div class="col-md-6" >
< input class="btn btn-info" type="button" value="Adicionar Itens" onclick="AddChild('tbItens')" id="btnAddItem" onBlur="somarTotal()"/ >
< /div ><br>
< /div >

Verdade @Guilherme, você está certo. Está com um erro no each. Vou atualizá-lo

Essa aqui é a tabela pai x filho


<div class="row" id="dvItens">
<div class="col-xs-12">
<table tablename="tbItens" id="tbItens" class="table table-bordered" customFnDelete="fnCustomDelete(this)" nodeletebutton="false" addbuttonlabel="Adicionar Itens" addbuttonclass="btn btn-info" noaddbutton="true" border="1">
   
<thead> 
<tr>  
<td><b>Descrição</b></td>
<td><b>Data da Despesa</b></td>
<td><b>Valor</b></td>
<td><b>Natureza</b></td>
<td><b>Pesquisar</b></td>
</tr>
</thead> 

txt_descProduto é somente um exemplo. Alterei a função AddChild (no comentário), assim como o @Guilherme falou.

continuando…


<tbody>
<tr>   
<td> <input name="idDesc" id="idDesc" type="text" value="" readonly="on" class="form-control" /></td>
<td> <input name="idData" id="idData" type="text" class="form-control" onBlur="somarTotal()"/></td>
<td><input name="idVal" id="idVal" type="text" class="form-control" placeholder="R$ 0,00" mask="#00.000.000.000.000,00" onBlur="totalizar(), somarTotal()"  /></td>
<td><input name="idNatu" id="idNatu" type="text" class="form-control" onBlur="somarTotal()"/></td>