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

Checkbox


Guest - Cristiano -

Pergunta

Guest - Cristiano -

Olá pessoal, a dúvida é sobre javascript... preciso fazer dentro de um form um sistema onde vai pegar os registros do meu db e montar um check box pra cada um. quando o usuário clicar no checkbox, ele monta um campo de texto para digitação da observação, e se por acaso o usuário desmarcar, ele retira o campo texto. O usuário pode marcar uma ou mais caixas de seleção, aparecendo um campo de texto para cada um dos check box marcados.

Muito obrigado

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Guest Continuando...

Beleza Christian,

Más não é bem assim, pois posso usar montar a function onde o campo aparece e desaparece, más teria que deixar o espaço da caixa de texto. O que preciso é que a função monte um nova caixa de texto caso o checkbox seja selecionado e a exclua caso ele seja deselecionado. mais ou menos assim:

function mostra_versao()

{

var texto = "";

for(i = 0; i < 5; i++){

texto += "<input name=\"versao\"" + i + " type=\"text\" id=\"versao\" value=\"\" size=\"32\"><br>";

}

container.innerHTML = texto;

}

function criacampos(obj)

{

var novocampo = "fpc,afim"

var campo_ok = novocampo.split(",");

var texto = "";

for (var i=0; i < campo_ok.length; i++){

document.write("<input name=" + campo_ok + " type='checkbox' value=" + campo_ok + " onclick='mostra(" + i +" )'>");

}

}

function mostra(n){

texto = "<input name=\"versao\"" + n + " type=\"text\" id=\"versao\" value=\"" + n + "\" size=\"32\"><br>";

container.innerHTML = texto

}

</script>

a função acima citada, monta o check box, e também quando o mesmo é selecionado, faz com que a caixa de texto seja criada. Más não consigo fazer com que o segundo checkbox monte uma segunda caixa de textos, e que quando o mesmo seja deselecionado, a caixa de texto suma...

agradeço se puderem me ajudar...

Link para o comentário
Compartilhar em outros sites

  • 0

Mas isso q falei da para fazer sem ocupar o espaço q você imagina que ele ocupa. É só você setar com css o campo para hidden e deixar a position dele como absolute. você vai trabalhar com tabelas não é mesmo? se você trabalhar com tabelas te dou um exemplo... responda depois te mando o exemplo...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Continuando...

Olá Christian,

Mais uma vez obrigado...

Puxa vida, se der certo como você disse, seria ótimo. Gostaria de ver um exemplo sim, se puder me mandar, agradeço muito, e me comprometo a publicar o código quando estiver pronto para que outras pessoas possam ter acesso.

Muito obrigado,

Cristiano

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz um exemplo pra ti...

<html>
<head>
<style>
#invisible {
	position: absolute;
    visibility: hidden;
}
</style>
<script language="javascript">
function aparece(obj, id){
	if (obj.checked == false) document.getElementById('id').id = 'invisible';
    else document.getElementById(id).id = 'id';

}
</script>
</head>
<body>
<table>
<form name="form" action="">
<tr>
	<td><input type="checkbox" name="check" onClick="aparece(this, 'invisible')"></td>
    <td id="invisible"><input type="text" nome="texto" style="border: 1px solid #000066;"></td>
    <td><input type="text" nome="texto" style="border: 1px solid #000066;"></td>
</tr>
</table>
</form>
</body>
</html>

Dá uma olhada e o q tu não entender me fala q tento te explicar...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Continuando...

Aí galera, segue um script muito legal que quando se clica no checkbox aparece um campo para digitação, e quando se retira a seleção o campo desaparece... é so aplicar, e fazer o trataento do formulários para a gravação dos dados... ficou muito bom. Obrigado Chrystian pela ajuda...

e como prometido está aí o script:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!--#include file="Connections/dados.asp" -->

<%
Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Request.QueryString
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%

If (CStr(Request("MM_insert")) = "form1") Then

  MM_editConnection = MM_dados_STRING
  MM_editTable = "pesquisa"
  MM_editRedirectUrl = "pesquisa_ok.asp"
  MM_fieldsStr  = "id_cliente|value|cliente|value|endereco|value|bairro|value|cidade |value|uf|value|cep|value|tel|value|fax|value|contato|value|id_sistema|value|id_sat_atend| value|id_sat_sistema|value|comentario|value"
  MM_columnsStr = "id_cliente|none,none,NULL|cliente|',none, ''|endereco|',none,''|bairro|',none,''|cidade|',none,''|uf|',none,''|cep|', none,''|tel|',none,''|fax|',none,''|contato|',none,''|id_sistema|none,1, 0|id_sat_atend|none,none,NULL|id_sat_sistema|none,none,NULL|comentario|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
  
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim rs_pesquisa
Dim rs_pesquisa_numRows

Set rs_pesquisa = Server.CreateObject("ADODB.Recordset")
rs_pesquisa.ActiveConnection = MM_dados_STRING
rs_pesquisa.Source = "SELECT * FROM pesquisa ORDER BY id_cliente ASC"
rs_pesquisa.CursorType = 0
rs_pesquisa.CursorLocation = 2
rs_pesquisa.LockType = 1
rs_pesquisa.Open()

rs_pesquisa_numRows = 0
%>
<%
Dim rs_sistema
Dim rs_sistema_numRows

Set rs_sistema = Server.CreateObject("ADODB.Recordset")
rs_sistema.ActiveConnection = MM_dados_STRING
rs_sistema.Source = "SELECT * FROM sistema ORDER BY id_sistema ASC"
rs_sistema.CursorType = 0
rs_sistema.CursorLocation = 2
rs_sistema.LockType = 1
rs_sistema.Open()

rs_sistema_numRows = 0
%>
<%
Dim rs_sat_atend
Dim rs_sat_atend_numRows

Set rs_sat_atend = Server.CreateObject("ADODB.Recordset")
rs_sat_atend.ActiveConnection = MM_dados_STRING
rs_sat_atend.Source = "SELECT * FROM sat_atend ORDER BY id_sat_atend ASC"
rs_sat_atend.CursorType = 0
rs_sat_atend.CursorLocation = 2
rs_sat_atend.LockType = 1
rs_sat_atend.Open()

rs_sat_atend_numRows = 0
%>
<%
Dim rs_sat_sistema
Dim rs_sat_sistema_numRows

Set rs_sat_sistema = Server.CreateObject("ADODB.Recordset")
rs_sat_sistema.ActiveConnection = MM_dados_STRING
rs_sat_sistema.Source = "SELECT * FROM sat_sistema ORDER BY id_sat_sistema ASC"
rs_sat_sistema.CursorType = 0
rs_sat_sistema.CursorLocation = 2
rs_sat_sistema.LockType = 1
rs_sat_sistema.Open()

rs_sat_sistema_numRows = 0
%>

<%
Dim Repeat2__numRows
Dim Repeat2__index

Repeat2__numRows = -1
Repeat2__index = 0
rs_sistema_numRows = rs_sistema_numRows + Repeat2__numRows
%>
<html>
<head>
<title>.:: Pesquisa de Satisfa&ccedil;&atilde;o de Clientes ::.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style>
#invisible1 {
visibility: hidden;
}
#invisible2 {
visibility: hidden;
}
#invisible3 {
visibility: hidden;
}
#invisible4 {
visibility: hidden;
}
#invisible5 {
visibility: hidden;
}
</style>

<script language="javascript">
function aparece(obj, id){
if (obj.checked == false) document.getElementById(id).style.visibility = 'hidden';
  else document.getElementById(id).style.visibility = 'visible';
}
</script>
</head>

<body leftmargin="0" topmargin="0" >



<div align="center"> </div>

  
<form method="post" action="<%=MM_editAction%>" name="form1">
  <table align="center">
    <tr valign="baseline"> 
      <td width="210" align="right" nowrap>Empresa:</td>
      <td width="556"> <input type="text" name="cliente" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Endereco:</td>
      <td> <input type="text" name="endereco" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Bairro:</td>
      <td> <input type="text" name="bairro" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Cidade:</td>
      <td> <input type="text" name="cidade" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Estado:</td>
      <td> <input type="text" name="uf" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Cep:</td>
      <td> <input type="text" name="cep" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Telefone:</td>
      <td> <input type="text" name="tel" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Fax:</td>
      <td> <input type="text" name="fax" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Nome:</td>
      <td> <input type="text" name="contato" value="" size="32"> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Sistema:</td>
      <td> 
<% 
cont = 1
While ((Repeat2__numRows <> 0) AND (NOT rs_sistema.EOF)) 
%>

        <table width="465" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td width="130"><input type="checkbox" name="id_sistema" value=1 onClick="aparece(this, 'invisible<%=cont%>')"> 
              <%=(rs_sistema.Fields.Item("sistema").Value)%> </td>
            <td width="282" id="invisible<%=cont%>">Digite a Vers&atilde;o: <input type="text" nome="texto" style="border: 1px solid #000066;" value="invisible<%=cont%>"> 
              <%=(rs_sistema.Fields.Item("versao").Value)%> </td>
          </tr>
        </table>
<% 
  Repeat2__index=Repeat2__index+1
  Repeat2__numRows=Repeat2__numRows-1
  rs_sistema.MoveNext()
  cont = cont + 1
Wend
%> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Satisfação quanto ao Atendimento:</td>
      <td> <select name="id_sat_atend">
          <%
While (NOT rs_sat_atend.EOF)
%>
          <option value="<%=(rs_sat_atend.Fields.Item("id_sat_atend").Value)%>"> <%=(rs_sat_atend.Fields.Item("classificacao").Value)%></option>
          <%
  rs_sat_atend.MoveNext()
Wend
If (rs_sat_atend.CursorType > 0) Then
  rs_sat_atend.MoveFirst
Else
  rs_sat_atend.Requery
End If
%>
        </select> </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">Satisfação quanto ao Sistema:</td>
      <td> <select name="id_sat_sistema">
          <%
While (NOT rs_sat_sistema.EOF)
%>
          <option value="<%=(rs_sat_sistema.Fields.Item("id_sat_sistema").Value)%>"> <%=(rs_sat_sistema.Fields.Item("classificacao").Value)%></option>
          <%
  rs_sat_sistema.MoveNext()
Wend
If (rs_sat_sistema.CursorType > 0) Then
  rs_sat_sistema.MoveFirst
Else
  rs_sat_sistema.Requery
End If
%>
        </select> </td>
    </tr>
    <tr> 
      <td nowrap align="right" valign="top">Comentario:</td>
      <td valign="baseline"> <textarea name="comentario" cols="50" rows="5"></textarea> 
      </td>
    </tr>
    <tr valign="baseline"> 
      <td nowrap align="right">&nbsp;</td>
      <td> <input type="submit" value="Inserir registro"> </td>
    </tr>
  </table>
  <input type="hidden" name="id_cliente" value="" size="32">
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</body>
</html>
<%
rs_pesquisa.Close()
Set rs_pesquisa = Nothing
%>
<%
rs_sistema.Close()
Set rs_sistema = Nothing
%>
<%
rs_sat_atend.Close()
Set rs_sat_atend = Nothing
%>
<%
rs_sat_sistema.Close()
Set rs_sat_sistema = Nothing
%>

SE PUDEREM MELHORÁ-LO, SERIA MUITO LEGAL...

UM ABRAÇO A TODOS,

CRISTIANO S. FERREIA

Link para o comentário
Compartilhar em outros sites

  • 0
Guest CONTINUANDO...

BOM PESSOAL, REPAREM NO EXEMPLO ACIMA CITADO QUE AS IMPLEMENTAÇÕES COM STYLE NÃO ESTÃO DINÁMICAS, TIVE QUE MONTÁ-LAS MANUALMENTE. EXISTE ALGUMA FORMA DE TORNÁ-LAS DINÁMICAS???

OBRIGADO,

CRISTIANO S. FERREIRA

Link para o comentário
Compartilhar em outros sites

  • 0

Bom não entendi muito porque você colocou cinco estilos iguais q variam o nome. porque você não usa o mesmo? se for o problema do id q np caso você estiver utilizando o id pra outra coisa, você pode deixar o id fixo e trabalhar com o class ao invés do id, dae muda um pouco a function e a forma de declarar o estilo. você declararia o estilo com .invisible ao invés de #invisible.

Qualquer coisa q você não conseguir posta ae...

Abraço

Crystian

PS.: post de número 1000

Link para o comentário
Compartilhar em outros sites

  • 0
Fiz um exemplo pra ti...

<html>
<head>
<style>
#invisible {
	position: absolute;
    visibility: hidden;
}
</style>
<script language="javascript">
function aparece(obj, id){
	if (obj.checked == false) document.getElementById('id').id = 'invisible';
    else document.getElementById(id).id = 'id';

}
</script>
</head>
<body>
<table>
<form name="form" action="">
<tr>
	<td><input type="checkbox" name="check" onClick="aparece(this, 'invisible')"></td>
    <td id="invisible"><input type="text" nome="texto" style="border: 1px solid #000066;"></td>
    <td><input type="text" nome="texto" style="border: 1px solid #000066;"></td>
</tr>
</table>
</form>
</body>
</html>

Dá uma olhada e o q tu não entender me fala q tento te explicar...

Abraço

Crystian

Infelizmente esse script não funciona no IE ...

Falows

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...