Ir para conteúdo

Arquivado

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

gRoOvE

[Resolvido] Diferença entre ID e NAME

Recommended Posts

Gostaria de saber qual a diferença entre usar ID e NAME em uma input. O que sei é que ID refere-se a apenas um elemento enquanto NAME refere-se a vários elementos com o mesmo nome. Ocorre que, quando uso o javascript para manipular algum dado da input, geralmente uso ID e quando passo dados para um $_GET[] do php tenho que usar NAME. Há alguma lógica nisso? Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, há uma lógica nisso...

 

Bom, primeiro ponto: o id é utilizado para identificar cada elemento em uma página. É por meio dele que normalmente conseguimos aplicar a interação com JavaScript sem que todos os elementos sejam afetados, pois ele é único, e com isso o JS não irá se "confundir" em relação a qual elemento ele deve atuar. Se dois ou mais elementos tivessem um mesmo id, como ele saberia se é o elemento X ou o Y?

 

Já o name é utilizado nos campos de um formulário e ele é responsável justamente para enviar os dados informados para uma outra página, seja ela PHP, ou ASP, .Net, JSP, ColdFusion, etc. E diferentemente do que você disse, ele não é usado somente em casos em que vários inputs possuam o mesmo name. Cada input em um formulário pode ter um name específico, e isso inclusive é a situação mais comum.

 

Agora, quando vários elementos possuem um mesmo name? Imagine um cadastro para receber newsletters em um site de notícias, e nesse cadastro você deve indicar suas áreas de interesse. Observe que normalmente nesse tipo de recurso utiliza-se inputs do tipo checkbox, pois você pode marcar mais do que um. Nesse caso, ao submeter o formulário você enviará um array, concorda? Pois são valores diferentes para um mesmo name. O que mudará em cada checkbox será o id (se ele tiver um, pois id não é obrigatório) e o valor definido no value (esse sim é obrigatório no caso do checkbox). Sendo assim, você deverá tratar na sua página que irá receber os dados informados nesse formulário essa informação como um array, e para isso cada linguagem possui as funções adequadas.

 

Outra coisa, ainda com o exemplo dos checkboxes de área de interesse, imagine que se você quisesse aplicar algum recurso via JavaScript em cada checkbox ao ser clicado: se cada um deles não tiver um id, como o JavaScript saberá qual é o checkbox que foi clicado se ele se basear pelo name? Imagem Postada Nessa situação então, aí sim é necessário que cada um tenha um id próprio e todos eles tenham o mesmo name...

 

Percebe a diferença entre um e outro? Se você não definir um name para seus campos, o browser não tem como "empacotar" os dados informados e enviá-los para uma outra página, não importando o método de envio (GET ou POST), e ele utiliza justamente o name dos campos para isso, e não o id...

 

Ah! Outra coisa, isso explica o motivo de o atributo name não poder ser mais aplicado às tags <form>, como antigamente, pois o que você envia não é o formulário, mas sim os dados que foram informados nos campos que estão dentro dele...

 

 

Espero que tenha esclarecido um pouco.

 

 

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa explicação mesmo Imagem Postada

Resumindo, id serve pro javascript lidar com os elementos da página, um a um, enquanto name serve para "empacotar" os dados informados e enviá-los para uma outra página.

Imaginei que fosse isso, só queria tirar a dúvida mesmo Imagem Postada

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa a explicação... mas eu queria saber o seguinte, se numa mesma input eu posso utilizar o atributo name e id.

A dúvida surge devido a um problema que ocorre com u formulario que estou desenvolvendo.

Numa tag input eu utilizo o atributo id para chamar uma mascara de entrada de telefone

só que eu preciso enviar esses dados para uma outra pagina php.

Se eu utilizar só id beleza a mascara funciona mas se eu colocar o atributo name nao vai :ermm:

Bom segue o código quem puder ajudar eu agradeço vlw!

********************************************

/*script que gera a mascara:*/
<script>
function mascara(o,f){
   v_obj=o
   v_fun=f
   setTimeout("execmascara()",1)
}
function execmascara(){
   v_obj.value=v_fun(v_obj.value)
}


function telefone(v){
   v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
   v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
   v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
   return v
}
</script>

***************************

o input com os atributos name (necessario para o envio de dados) e a id para a mascara de entrada:

echo"<tr><td>Telefone<br><input name = 'tel'id='itelefone' onkeypress='mascara(this,telefone)' maxlength='14' /></td>";

 

Se eu uso só a id a mascara funciona :huh: , mas se eu colocar o name a mascara simplesmente nao funciona eu sou iniciante se puderem me ajudareu agradeço abraço! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

erro de sintaxe html, e de performance no php

 

faça assim:

 echo '<tr><td>Telefone<br><input name="tel" id="itelefone" onkeypress="mascara(this,telefone);" maxlength="14" /></td>';

e ao contrário do que você pensou, essa máscara não precisa do id para funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
use o Responder Azul respondery.png

ou a 'Resposta Rápida'.

 

exato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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