Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabrielvt14

Validar formulario com name[] e id iguais

Recommended Posts

Olá pessoal,

 

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.

O que encontrei foi mais ou menos assim:

function validacao(nomecampo) {
	var total = document.getElementsByName(nomecampo);
	for(i = 0; i < total.lenght; i++) {
    	if (document.getElementByName(i) < 10) {
        	alert('Erro');
          return (false);
       	}
    }
}

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites
function validacao() {
	if (!validate()) {
		alert('Erro');
	}
}

function $j(selector) {
	return document.querySelectorAll(selector);
}

function validate() {
	var i = 0, 
		valid = true,
		textarea = $j('textarea[name="descr_icon[]"]');
	for (; i < textarea.length; i++) {
		var len = textarea[i].value.length;
		if (len < 10) {
			valid = false;
			textarea[i].style = 'border: 1px solid #ff0000';
		} else {
			valid = true;
			textarea[i].style = 'border: 1px solid #a9a9a9';
		}
	}
	return valid;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.