Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Tenho um formulário que faço aparecer um campo input CPF OU CNPJ, quando é selecionado com o select.
Fiz todo o JAVASCRIPT, aparecer e desaparecer e tal, só que quando estou submetendo o formulário, um dos campos perde o valor do campo input, só funciona para um.
Alguém pode me ajudar, o que pode estar acontecendo....
Segue todo o formulário
teste.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP + XML</title>
<script type="text/javascript">
function mostraDiv(valor)
{
if(valor == "cpf")
{
document.getElementById("cpf").style.display = "block";
document.getElementById("cnpj").style.display = "none";
}
else if(valor == "cnpj")
{
document.getElementById("cpf").style.display = "none";
document.getElementById("cnpj").style.display = "block";
}
}
</script>
<style type="text/css">
body{ font-family: Arial, Helvetica, sans-serif;font-size: 12px;}
.div_erro
{
border: 1px #FF0000 solid;
background: #FFC4C4;
padding: 3px 5px 3px 5px;
font-family: Arial, Helvetica, sans-serif;
font-size: 13px;
text-align:center;
}
#cpf, #cnpj{display:none;}
</style>
</head>
<body>
<?
if (!$_POST){
?>
<center>
<form method="post" enctype="multipart/form-data">
<table width="100%" border="0" cellpadding="3" cellspacing="3">
<tr>
<td align="center">
<select name="opcoes" onchange="mostraDiv(this.value)">
<option value="cpf"> CPF </option>
<option value="cnpj"> CNPJ </option>
</select>
<div id="cpf">
CPF: <input type="text" name="cpfcnpj" />
</div>
<div id="cnpj">
CNPJ: <input type="text" name="cpfcnpj" />
</div>
<input type="submit" name="logar" value="Logar" />
</td>
</tr>
</table>
</form>
</center>
<?
}else{
// atribuindo o valor digitado para a variavel
$cpfcnpj = $_POST["cpfcnpj"];
// verifica se campo está em branco
if ($cpfcnpj == ''){
echo "<p class=div_erro>Por favor, preencha o campo.</p>";
echo "<meta HTTP-EQUIV='refresh' CONTENT='2;URL=teste.php'>";
}else{
// parte importante - Converte um arquivo XML em um objeto
// -- nome do arquivo .xml
$xml = simplexml_load_file('xml/devolucao.xml');
$cpfcnpjEncontrado = false;
//$xml->CPFCNPJ -- acessa as propriedades do objeto
foreach ($xml->consorciado as $cpfcnpj_xml)
{
$cpf = $cpfcnpj_xml->cpf;
$cnpj = $cpfcnpj_xml->cnpj;
// comparando os dados
if ($cpfcnpj == $cnpj)
{
$cpfcnpjEncontrado = true;
break;
}
// comparando os dados
if ($cpfcnpj == $cpf)
{
$cpfcnpjEncontrado = true;
break;
}
}
if($cpfcnpjEncontrado === true)
{
echo'<p><strong>Existem valores a receber, entre em contato conosco.</strong></p>';
}else {
echo '<p><strong>Não existem valores a receber, entre em contato conosco.</strong></p>';
echo "<meta HTTP-EQUIV='refresh' CONTENT='2;URL=teste.php'>";
}
}
}
?>
</body>
</html>eu mudei o nome dos campos.. e agora só pega o valor de um input, quando muda no select
>
<div class="ouvidoria">
<div class="titulo"><img src="_img/recursos_nao_procurados.gif" /></div>
<?
if (!$_POST){
?>
<div class="formularios">
<form name="form1" id="form1" action="" method="post">
<div class="esquerda_recursos">
<br/><br/>
<select name="opcoes" onChange="mostraDiv(this.value)">
<option value="cpf"> CPF </option>
<option value="cnpj"> CNPJ </option>
</select>
<div id="campo_cpf"><label>CPF</label> <input type="text" name="cpf" id="cpf" maxlength="14" style="width:100%" value="" /></div>
<div id="campo_cnpj"><label>CNPJ</label> <input type="text" name="cnpj" id="cpnj" maxlength="18" style="width:100%" value="" /></div>
</div>
<br/><br/><br/><br/>
<div class="direita_recursos">
<div align="right" style="padding-top:5px;"><input type="image" src="_img/enviar.gif" style="width:94px; height:28px; background:none;" /></div>
</div>
<br/><br/>
<div class="texto">
<p>Instruções:<br/><br/>
Para preenchimento do número de CPF utilize somente pontos. <br/><b>Ex: (XXX.XXX.XXX.XX)</b> <br/><br/>
Para preenchimento do número de CNPJ utilize somente pontos e barra.<br/><b> Ex: (XX.XXX.XXX/XXXX.XX)</b>
</p></div>
</form>
</div>
<?
}else{
// atribuindo o valor digitado para a variavel
$cpf = $_POST["cpf"];
$cnpj = $_POST["cnpj"];
// verifica se campo está em branco
if ($cpf == ''){
echo "<p class=div_status>Por favor, preencha o campo CPF</p>";
echo "<meta HTTP-EQUIV='refresh' CONTENT='2;URL=recursos.php'>";$campoProcurado = '';
if (isset($cpf)) {
if(!empty($cpf)){
$campoProcurado = $cpf;
}
}
if ($cnpj == ''){
echo "<p class=div_status>Por favor, preencha o campo CPNJ</p>";
echo "<meta HTTP-EQUIV='refresh' CONTENT='2;URL=recursos.php'>";$campoProcurado = '';
if (isset($cnpj)) {
if(!empty($cnpj)){
$campoProcurado = $cnpj;
}
}
}
// parte importante - Converte um arquivo XML em um objeto
// -- nome do arquivo .xml
$xml = simplexml_load_file('xml/devolucao.xml');
$cpfcnpjEncontrado = false;
//$xml->CPFCNPJ -- acessa as propriedades do objeto
foreach ($xml->consorciado as $cpfcnpj_xml)
{
$cpf_xml = $cpfcnpj_xml->cpf;
$cnpj_xml = $cpfcnpj_xml->cnpj;
// comparando os dados
if (($campoProcurado == $cnpj_xml) or ($campoProcurado == $cpf_xml))
{
$cpfcnpjEncontrado = true;
break;
}
}
if($cpfcnpjEncontrado === true)echo '<p><strong>Não existem valores a receber, entre em contato conosco.</strong></p>';
echo "<meta HTTP-EQUIV='refresh' CONTENT='2;URL=recursos.php'>";
}
}
}
?>
</div>Você, além de esconder o campo, é preciso usar o disabled para que o campo fique inativo
Área incorreta para o post.
Veja, se a lógica é utilizar só um campo, pra que então tu quer o valor dos 2 ?
<input type="text" name="cpfcnpj" />
seus 2 campos possuem o mesmo nome, está errado.