Validar formulario com name[] e id iguais - Javascript - Fórum iMasters
By Gabrielvt14, August 2, 2017 in Javascript
Tenho uma um formulário dinamico, onde pode aparecer várias textareas, e por padrão, essas textareas tem o mesmo id e o mesmo name, porém, o name esta sendo enviado como array (name="nomecampo[]").
Queria saber como faço pra validar todos essas textareas no javascript, porque preciso verificar se essas textareas tem menos de 10 caracteres.
A textarea esta assim:
<textarea class="form-control txta" rows="4" name="descr_icon[]" id="descri_icon" ></textarea>
E como o formulario é dinamico, pode aparecer uma, nenhuma, ou várias textareas iguais a esta, e preciso validar no javascript (preciso que seja puro, nao posso utilizar jquery) cada textarea desta, mas a validação é a mesma para todas.
Encontrei algumas soluções contando o indice das textareas pelo name, mas no meu caso o name esta passando como array, entao nao deu certo.
function validacao(nomecampo) {
var total = document.getElementsByName(nomecampo);
for(i = 0; i < total.lenght; i++) {
if (document.getElementByName(i) < 10) {
E na chamada da função:
<textarea name="camponome" id="camponome"></textarea>
<button onclick="validacao('camponome')"></button>
Mas como disse, isso não funcionou no meu caso porque passo o name como array (nomecampo[]).
Alguém saberia alguma posssivel solução?
function $j(selector) {
textarea = $j('textarea[name="descr_icon[]"]');
for (; i < textarea.length; i++) {
var len = textarea[i].value.length;
textarea[i].style = 'border: 1px solid #ff0000';
textarea[i].style = 'border: 1px solid #a9a9a9';
@Gabrielvt14, algumas regras do HTML:
Não repetir o ID, o ID é único.
Se possível, não repita também o name, a não ser no caso de radio e checkbox, isso porque o usuário pode digitar uma virgula(,) e bagunçar sua lógica no momento do submit para recuperar essas informações.
Evite colocar "[]{}()" e outros caracteres "diferentes" no name/ID
Provavelmente você está criando essas várias textareas, ou via javascript, ou via uma linguagem serverside(PHP, C#, etc), altera um pouco sua lógica para criar uma variável contador e ir concatenando esse contador no name/ID, assim você garante que não vai ter name/ID repetidos