Ir para conteúdo
Fórum Script Brasil
  • 0

Manipulando campos com evento dinamicamente.


nic

Pergunta

Olá amigos, é a primeira vez que posto aqui e preciso de uma grande ajuda, pois tenho procurado em vão na internet, soluções para este problema.
O formulário abaixo, funciona quase perfeitamente, com exceção da chamada à função javascript. A minha intenção é que cada vez que se marque um checkbox, a função 'mostrarCampo()' torne visível o campo "input" (logo à direita desse checkbox).
Acontece, que cada vez que marco um checkbox (qualquer um), fica visível somente o input da 1ª linha. O que está errado?

//-----------------função Javasscript (em arquivo separado .js)------------------//
function mostrarCampo(){
case "f_Ins_Suprimento":
document.f_Ins_Suprimento.sClaNome.style.visibility="visible";
document.f_Ins_Suprimento.tfSupNome.style.visibility="visible";
document.f_Ins_Suprimento.tfSupEstoque.style.visibility="visible";
break;
                .
                .
                .
case "f_Solicitacao_2":
est = document.getElementsByName("tfEst[]");
for(var i = 0;  i<est.length; i++){
document.f_Solicitacao_2.tfEst[i].style.visibility="visible";
}
break;
default:
break;
}
}
//------------------O FORMULARIO--------------------------------------------------//
 
<!-- FORMULARIO DINÂMICO COM TRECHOS EM PHP QUE TRAZEM DADOS PARA SEREM MANIPULADOS -->
 
<form name="f_Solicitacao_2" action="index.php" method="post">
<div align="center">
<table id="tabRel">
 <tr>
   <th colspan="4">SOLICITAÇÃO DE ALOCAÇÃO DE RECURSOS</th>
 </tr>
 <tr><td colspan='2'>Equipamentos</td><td>Estoque</td><td></td></tr>
<?php
 
/*RECUPERANDO UMA VARIÁVEL VINDA DE OUTRO ARQUIVO */ 
$proId = $_REQUEST['id'];
 
/* CAPTURANDO E TRATANDO UMA EXCEPTION*/
    try {
 
/*RECEBENDO OS DADOS*/
$lista = Equipamento::listarEquipamento();
 
/*PARA CADA DADO CONTIDO NO ARRAY LISTA, RECEBENDO E...*/
foreach($lista as $value){
$equ_Id = $value['equ_Id'];
$equ_Nome = $value['equ_Nome'];
$equ_Est = $value['equ_Estoque'];
 
/*ESCREVENDO NA TELA DENTRO DE UMA TABELA COM AS SEGUINTES COLUNAS
* NA PRIMEIRA, A CHAMADA DA FUNÇÃO 'mostrarCampo() É EXECUTADA QUANDO
* O CHECKBOX FOR MARCADO E DEVE TORNAR VISÍVEL O CONTEUDO DA COLUNA
* SEGUINTE */
echo " 
<tr>
<td colspan='2'><input type='checkbox' id='chEquName' name='chEquName[]' onclick='mostrarCampo();' value=\"".$equ_Id."\"  />".$equ_Nome."</td>
  <td>Estoque :<input name='tfEst[]' id='tfEst[]' type='text' size='4' style='visibility:hidden;' value=\"".$equ_Est."\" /></td>
  <td><input type='hidden' name='hProId' value=\"".$proId."\" /></td>
</tr>";
}
 
/* CASO A EXCEÇÃO TENHA SIDO CAPTURADA, EXEBE MENSAGEM*/
} catch (N_ListaVazia $exc) {
echo $exc->getMessage();
}
?>
</table>
   <input type='hidden' name='hLabel' value='tela_Solicitacao_2' /> 
<p align="center"><input type="submit" name="bSubmit" value="confirmar"/></p>
<p align="center"><a href="?acao=tela_Servicos">VOLTAR</a></p>
<p align="center"><a href="?acao=logout">SAIR</a></p>
</div>
</form>
 
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Saudações nic,

No script :

function mostrarCampo(){
case "f_Ins_Suprimento":
document.f_Ins_Suprimento.sClaNome.style.visibility="visible";
document.f_Ins_Suprimento.tfSupNome.style.visibility="visible";
document.f_Ins_Suprimento.tfSupEstoque.style.visibility="visible";
break;

a sintaxe não seria:

function mostrarCampo(x){

switch(x) {
    case 0:
        code block
        break;
    case 1:
        code block
        break;
    default:
        default code block
}
Link para o comentário
Compartilhar em outros sites

  • 0

Sim, Sandro, na verdade a sintaxe é exatamente esta. É que na pressa de escrever aqui, não copiei o trecho corretamente, mas no meu código está escrito assim mesmo.

"function mostrarCampo(){

var nameForm = document.forms[0].name;
switch (nameForm) { ...
Link para o comentário
Compartilhar em outros sites

  • 0

Feito. Gratíssima pela atenção de qualquer forma. Ficou assim:

.
.
.case "f_Solicitacao_2":
    var ch = document.getElementsByName("chEquName[]");
    var tot = ch.length;
    for(var i = 0; i<tot; i++){
        if(ch[i].checked){
            var sol = document.getElementsByName("tfQtSol[]");
            sol[i].style.visibility="visible";
        }else{
            var sol = document.getElementsByName("tfQtSol[]");
            sol[i].value="";
            sol[i].style.visibility="hidden";
        }
    }
break; 

e o form...

foreach($lista as $value){
$equ_Id = $value['equ_Id'];
$equ_Nome = $value['equ_Nome'];
$equ_Est = $value['equ_Estoque'];
echo "
<tr>
<td><input type='checkbox' name='chEquName[]' onclick='mostrarCampo();' value=\"".$equ_Id."\"  />".$equ_Id." - ".$equ_Nome."</td>
  <td>Estoque :<input type='text' name='tfEst[]' size='4' value=\"".$equ_Est."\" /></td>
  <td>Solicitada :<input type='text' name='tfQtSol[]' size='4' style='visibility:hidden;' maxlength='4' /></td>
  <td><input type='hidden' name='hProId' value=\"".$proId."\" /></td>
</tr>";
}
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...