Jump to content
Carlos Rocha

JavaScript Exibir os id's dos campos

Recommended Posts

Carlos Rocha

Olá pessoal.

Bom Dia!

Tenho o seguinte JS que cria inputs com o clique do rato. Porem, como os inputs são criados dentro de uma div, quando exibo o código fonte não aparecem os inputs no form.

Existe uma forma de eu saber os ids do formulario com Javascript?

Eis o código que cria os inputs:

// Javascript Document

var numero = 0;
//add caixa de texto
function add_text(){
 //pega a div 
 var DivText = document.getElementById('text');
 //cria uma nova div   
 var DivNovaText = document.createElement('div');   
 //altera o nome da div
 DivNovaText.setAttribute("id","DivText"+numero);
 //coloca no innerHTML da nova div o código html necessário
 DivNovaText.innerHTML = '<input type=text id=t['+numero+'] name=t['+numero+']><input type=button value=Excluir onclick=deltext(\'DivText'+numero+'\')>';
 //adiciona a nova div como filha da divtext
 DivText.appendChild(DivNovaText);
 //coloca o cursor na text criada
 document.getElementById('t['+numero+']').focus();
 //incrementa                  
 numero++;  
}
//exclui caixa de texto
function deltext(div){
       var d = document.getElementById('text');
       var olddiv = document.getElementById(div);
       //remove a div 
       d.removeChild(olddiv);
}
window.onload = function(){
  add_text();//cria um campo inicialmente
  document.getElementById('add').onclick = function(){//quando clicar no botão
       add_text();//cria com click do botão
  }
}

Edited by carcleo

Share this post


Link to post
Share on other sites
Carlos Rocha

Tentei fazer uma validação do email por @ mas de qualquyer jeito dá que não tem o arroba.

Onde estará o erro?

function f(form)
{
var inputs = document.getElementsByTagName("input");
for (i=0;i<inputs.length;i++)
{
if (inputs[i].type=='text')
{
alert (inputs[i].value);
if (inputs[i].value=='')
{
alert('Preencha (ou delete) campo email');
inputs[i].focus();
return false
}
else if (inputs[i].value.indexOf("@"))
{
alert('Erro no preenchimento do campo email. Verifique');
inputs[i].focus();
return false
}
}
}
 } 

Share this post


Link to post
Share on other sites
Carlos Rocha

Acho que achei erro.

Mas, preciso mudar meu código e, para isso, preciso saber quantos campos type=text há no formulario.

Não estou encontrando isso.

Pode me ajudar?

Exemplo:

Meu form tem (dinamicamente criados) 'n' inputs texts criados de 0 até n-1. preciso saber essa quantidade usando JavaScipt.

Alterei aqui e funcionou.

Mas se tiver um jeito de melhorar...

function valida_form(form)
{
var inputs = document.getElementsByTagName("input");
for (i=0;i<inputs.length;i++)
{
if (inputs[i].type=='text')
{
atPos = inputs[i].value.indexOf("@",1);
periodPos = inputs[i].value.indexOf(".",atPos);

if (inputs[i].value == '') {
alert('Por favor, qual o e-mail?');
inputs[i].focus();
return false;
} 
else if (
(atPos == -1) || 
(inputs[i].value.indexOf("@",atPos+1) > -1) || 
(periodPos == -1) || 
(periodPos+3 > inputs[i].value.length)
)
{
alert("Teu e-mail foi digitado incorretamente.\nVerifique se foi digitado com o seguinte padrão:\n email@provedor.fim");
inputs[i].focus();
return false;
}
}
}
form.submit();
 } 

Obrigado!

Share this post


Link to post
Share on other sites
yoda

Para saberes todos os inputs que queres, adiciona-lhes uma classe primeiro :

DivNovaText.innerHTML = '<input type=text id=t['+numero+'] name=t['+numero+']><input type=button class="dynamic-input" value=Excluir onclick=deltext(\'DivText'+numero+'\')>';

Depois :

var matches = document.querySelectorAll('.dynamic-input');

for (var i=0;i<matches.length;i++)
{
    /* something */
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.