Ir para conteúdo

POWERED BY:

Arquivado

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

carol=)

Validar Formulário com campo desabilitado

Recommended Posts

Oi pessoal, sou nova aqui no fórum e espero que vocês me tratem bem, este é meu primeiro post.

 

Eu fiz um formulário em HTML com duas opções, um select e um texto, mas o segundo só poderia aparecer quando uma opção em particular do primeiro estivesse habilitada.

 

Aí vi um tópico abaixo que falava justamente disso, mas eu também queria que poder validar este mesmo formulário.

 

Aí adaptei o código, depois usei uma extensão do dreamweaver que peguei aqui mesmo no iMasters para fazer isso e gerei o código a seguir:

 

O problema é que daí, se eu escolher a opção 1 (Google) no primeiro formulário e clicar em Enviar, aparece a janelinha do JavaScript dizendo que não pode enviar porque tenho que preencher a opção Outros, mas essa está desabilitada. Alguém sabe onde está o erro?

 

(Bem, só testando o código pra entender mesmo. Sem preguiça, gente, por favor, estou desesperada pra conseguir fazer isso. :D )

 

Beijão a todos

Carol=)

 

<script type="text/JavaScript">

<!--

function enableField (valor) {

if (valor == '3') document.getElementById('outro').disabled = false;

else document.getElementById('outro').disabled = true;

}

 

function MM_findObj(n, d) {

var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[n];

for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document);

if(!x && d.getElementById) x=d.getElementById(n); return x;

}

 

function YY_checkform() {

var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq;

for (var i=1; i<args.length;i=i+4){

if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}

var myObj = MM_findObj(args.replace(/\[\d+\]/ig,""));

myV=myObj.value;

if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){

if (myReq&&myObj.value.length==0){addErr=true}

if ((myV.length>0)&&(args[i+2]==1)){ //fromto

var myMa=args[i+1].split('_');if(isNaN(myV)||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true}

} else if ((myV.length>0)&&(args[i+2]==2)){

var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true;

} else if ((myV.length>0)&&(args[i+2]==3)){ // date

var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);

if(myAt){

var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];

var myDate=new Date(myY,myM,myD);

if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};

}else{addErr=true}

} else if ((myV.length>0)&&(args[i+2]==4)){ // time

var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}

} else if (myV.length>0&&args[i+2]==5){ // check this 2

var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));

if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];

if(!myObj1.checked){addErr=true}

} else if (myV.length>0&&args[i+2]==6){ // the same

var myObj1 = MM_findObj(args[i+1]);

if(myV!=myObj1.value){addErr=true}

}

} else

if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){

var myTest = args.match(/(.*)\[(\d+)\].*/i);

var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;

if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}

if (args[i+2]==2){

var myDot=false;

for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}

if(!myDot){myErr+='* ' +args[i+3]+'\n'}

}

} else if (myObj.type=='checkbox'){

if(args[i+2]==1&&myObj.checked==false){addErr=true}

if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}

} else if (myObj.type=='select-one'||myObj.type=='select-multiple'){

if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}

}else if (myObj.type=='textarea'){

if(myV.length<args[i+1]){addErr=true}

}

if (addErr){myErr+='* '+args[i+3]+'\n'; addErr=false}

}

if (myErr!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+myErr)}

document.MM_returnValue = (myErr=='');

}

//-->

</script>

 

<form action="formulario.php" method="post" name="form" onSubmit="YY_checkform('form','outro','#q','0','Preencha o campo \'Outro\'','comoencontrou','#q','1','Escolha uma opção .');return document.MM_returnValue">

 

<label for="comoencontrou">Como encontrou nosso site?</label><br />

<select name="comoencontrou" id="comoencontrou" onChange="enableField(this.value)">

<option value="" selected="selected">Selecione</option>

<option value="1">Google</option>

<option value="2">Yahoo</option>

<option value="3">Outro (Informe abaixo)</option>

</select><br /><br />

 

<label for="outro">Outro:</label><br />

<input type="text" name="outro" id="outro" size="50" maxlength="100" disabled="disabled" /><br /><br />

 

<input type="submit" name="Submit" value="Enviar" id="Submit">

 

</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa!!! :D http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif

 

Fica só aquela pergunta: como o DW conseguiu fazer tudo aquilo???

 

Mas sem querer abusar, só mais uma coisa: o IE sempre trata esse tipo de Script como "estranho"? Quer dizer, ele sempre vai exibir aquela mensagem "Para ajudar a proteger sua segurança" lá em cima? Ou existe alguma maneira disso não acontecer?

 

E valeu mesmo por tudo, as coisas ficaram bem mais claras agora...

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.