Caractere Curinga na busca de campos

Uma pergunta aos mestres em JQuery. Consigo utilizar o find() para retornar resultados que "não" contenham uma sentença informada com curinga? Atualmente eu já utilizo e funciona muito bem dessa forma:

$('#pnPaineisFormulario').find('input[id$=_d]').

Neste caso me retorna todos os campos que possuem "_d" no final da ID, mas preciso que traga somente os que não tenha.

Surgiu essa necessidade por causa dos botões switch do Style Guide, que duplicam o objeto quando renderiza, criando um outro, porém com _d no final.

1 curtida

Opa, já tentou isso?

https://www.w3schools.com/jquery/sel_not.asp

Tentei assim Gustavo:

$(“:not(‘input[id$=_d]’)”);

Mas não trouxe o resultado esperado.

Então, você pode tentar da maneira que o Gabriel mencionou. Em todo caso também é possível fazer a negação direto no atributo. Como descrito aqui: jQuery [attribute!=value] Selector

@Tiago, tente dessa forma:


$("input:not(input[id$='_d'])");

Sucesso Gabriel, trouxe todos os campos que eu queria. Mas e sobre essa questão do Fluig duplicar os campos e nomear com _d no final do id, é normal? Eu já tinha notado que ele faz isso com campos tipo select também, daí tenho que ficar tratando e ocultando eles pra não ficar duplicado na tela.

1 curtida

Na verdade nunca vi isso de duplicar campo e adicionar _d no final. O que vejo que ocorre comigo é que quando bloqueio o campo no enable fields ele duplica o campo e adiciona _ antes do name do campo:

Exemplo: tenho o campo

<input type="text" name="teste" id="teste" />

Dai quando bloqueio no enable fields ficam 2 campos:

<input type="hidden" name="teste" id="teste" />

<input type="text" name="_teste" id="_teste" />

Veja o trecho do código:

E olha o que ele gera:

continua…

Anexo   N/A