Ir para conteúdo

POWERED BY:

Arquivado

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

interlokk

[Resolvido] Pegando valores de checkbox 'não' marcadas

Recommended Posts

pessoal, desculpa se já tem algum tópico com esta dúvida, mas fiz uma busca e não achei a solução pra esse problema. É o seguinte tenho uma pagina em que lanço os valores de várias checkboxes com o seguinte input:

 

<input name="valor" type="checkbox" value="True">

Preciso pegar os valores das checkboxes, as marcadas e as não marcadas, definir um parametro (True para marcadas e False para não marcadas) e lançar isso no bd simultaneamente. Pego os valores da seguinte forma:

 

valor = request.form("valor")

E o retorno vem assim: True, True, True...

Separo com um split na virgula e depois faço um iLoop. O problema e que os trues correspondem apenas a quantidade de checkboxes marcadas. As não marcadas não retornam valor e aí dá erro. Já tentei fazer algo do tipo:

 

valor = "False"
if request.form("valor") <> "" then
 	valor = request.form("valor")
end if

Mas ainda assim não dá certo pois o valor total da request não é nulo caso haja uma ou mais checkboxes marcadas. Caso todas estiverem marcadas funciona corretamente. Como faço???? Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o funcionamento do checkbox

 

Ele só passa os marcados para a outra pagina

 

Se sabe quais são as opções e sabe os que estão marcados todos os demais estão desmarcados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu sei, mas eu preciso jogar um false no bd para cada checkbox não marcada e um true para cada uma marcada, não apenas saber quantas estão marcadas ou não. E os parametros tem que vir na sequencia correta pois eu atulizo vários registros simultaneamente.

 

ai vai o código que recebe o request:

 

valor= request.form("valor")
id= request.form("id")

Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
Conn.Open = conn
valor=split(valor,",")
id=split(id,",")
for iLoop=LBound(a) to UBound(a)
id=Trim(id(iLoop))
valor=Trim(valor(iLoop))
sql = "UPDATE tabela SET valor= '" & valor & "' WHERE id = '" & id &
Conn.Execute(sql)
next
Conn.Close

e o erro:

 

 

 

Erro de tempo de execução do Microsoft VBScript erro '800a0009'

 

Subscrito fora do intervalo: 'iLoop'

 

/aluno/InsereNotaExe.asp, line 52

 

 

 

 

 

isso ocorre porque tem mais registros para serem atualizados do que valores a serem entregues e a pagina não sabe o que fazer. Alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

atribua um valor para os checkbox´s que não estão marcados e faça um loop para recuperá-los

antes da linha do erro poe um response.write na variavel para ver o que esta sendo passado

 

response.write(variavel)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

atribua um valor para os checkbox´s que não estão marcados e faça um loop para recuperá-los

Sem querer abusar xanburzum, como eu faço isso?

 

Seria isso?

 

valor = "False"
For each item in Request("valor")
if request.form("valor") <> "" then
 	valor = request.form("valor")
end if
next

Já tentei mas não deu certo, vem apenas os trues....Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode marcar tudo como false e depois alterar para true os que foram marcados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode marcar tudo como false e depois alterar para true os que foram marcados

 

Mário, mas é isso que estou tentando mas não dá certo. Por favor, me mostra um exemplo de como faria isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae

 

fiz uma gambizinha aqui com javascript e funcionou, segue o código:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Documento sem título</title><script>function validaform(f) {cb1 = f.valor[0].checked;cb2 = f.valor[1].checked;cb3 = f.valor[2].checked;cb4 = f.valor[3].checked;cb5 = f.valor[4].checked;cb6 = f.valor[5].checked;f.resultado.value = cb1+","+cb2+","+cb3+","+cb4+","+cb5+","+cb6return true;}</script></head><body><form action="recebe.asp" onsubmit="return validaform(this);" method="post"><input type="checkbox" name="valor" /><br /><input type="checkbox" name="valor" /><br /><input type="checkbox" name="valor" /><br /><input type="checkbox" name="valor" /><br /><input type="checkbox" name="valor" /><br /><input type="checkbox" name="valor" /><br /><input type="hidden" name="resultado" value="" /><input type="submit" value="Enviar" /></form></body></html>
recebe.asp:

<%response.write request.form("resultado")%>
Se quiser adicionar ou tirar campos é só mexer lá no javascript =D

 

espero ter ajudado Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae

 

fiz uma gambizinha aqui com javascript e funcionou, segue o código:

 

 

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Documento sem título</title><script>function validaform(f) {cb1 = f.valor[0].checked;cb2 = f.valor[1].checked;cb3 = f.valor[2].checked;cb4 = f.valor[3].checked;cb5 = f.valor[4].checked;cb6 = f.valor[5].checked;f.resultado.value = cb1+","+cb2+","+cb3+","+cb4+","+cb5+","+cb6return true;}</script></head><body><form action="recebe.asp" onsubmit="return validaform(this);" method="post"><input type="checkbox" name="valor" /><input type="checkbox" name="valor" /><input type="checkbox" name="valor" /><input type="checkbox" name="valor" /><input type="checkbox" name="valor" /><input type="checkbox" name="valor" /><input type="hidden" name="resultado" value="" /><input type="submit" value="Enviar" /></form></body></html>
recebe.asp:
<%response.write request.form("resultado")%>
Se quiser adicionar ou tirar campos é só mexer lá no javascript =D

 

espero ter ajudado Imagem Postada

 

 

 

Valeu mesmo Augusto, eu tava pensando mesmo em java pois em vb tava complicado. Vou testar a sua função com um while pra ver se dá certo. Depois eu posto aqui.

 

na hora de jogar um repeat no java para alterar a função de acordo com a quantidade de checkbox dá pau e a função não roda. TEm como fazer uma função dessa sem precisar mudar de acordo com a quantidade de checkboxes?

 

Pensei em colocar um evento onclick em cada checkbox do tipo onclick="this.value[0].checked;" mas não acontece nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae interlokk, acho que esta é a solução final para o seu problema:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
<script>
function validaform(f) {
cbs = 0;
for(i=0;i<f.elements.length-1;i++){
	if (f.elements[i].type=="checkbox" && f.elements[i].name=="valor"){
	cbs++;	
	}
	}
	resultado = ""
	for(i=0;i<=cbs-1;i++){
	resultado+=f.valor[i].checked;
	if (i!=cbs-1) {
		resultado+=",";
	}
	}
f.resultado.value = resultado
return true;
}
</script>
</head>

<body>
<form action="recebe.asp" onsubmit="return validaform(this);" method="post">
<input type="checkbox" name="valor" /><br />
<input type="checkbox" name="valor" /><br />
<input type="checkbox" name="valor" /><br />
<input type="checkbox" name="valor" /><br />
<input type="checkbox" name="valor" /><br />
<input type="checkbox" name="valor" /><br />
<input type="hidden" name="resultado" value="" />
<input type="submit" value="Enviar" />
</form>
</body>
</html>

é isso aí =D espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

e no final, foi apenas uma junção em javascript...

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.