sunnybrad
asked on
Problems processing check boxes
Dear All:
I am reading a txt datafile and creating a form. For 1 and 0 boolean values. I have created checkboxes for example:
<INPUT type=checkbox value=$calldonotdisturb1 name=donotdisturb1>
The above line is a part of larger form.
Now the problem when I check the checkbox.....It does turn the value to 1 it takes the hardwired value from above.
What is teh correct way to implement this...text boxes etc work fine new edited value is taken. With checkboxes it does take the new chceked value.
Please let me know what to do diffirent.
Best Regards
sunnybrad
I am reading a txt datafile and creating a form. For 1 and 0 boolean values. I have created checkboxes for example:
<INPUT type=checkbox value=$calldonotdisturb1 name=donotdisturb1>
The above line is a part of larger form.
Now the problem when I check the checkbox.....It does turn the value to 1 it takes the hardwired value from above.
What is teh correct way to implement this...text boxes etc work fine new edited value is taken. With checkboxes it does take the new chceked value.
Please let me know what to do diffirent.
Best Regards
sunnybrad
ASKER
Hi Zyloch:
The problem is in processing the checkbox...I use perl/cgi to create this page which has checkboxes. I put values in there from a data file.
Now when I go ahead and click the checkbox and say the previous value (The value I print there in the form) was zero the value still is what I printed i.e. 0 and not 1 because I checked it.
What I am doing is I think fundamentally flawed. It work for text boxes etc. For check box this way is flawed.
Let me know how to do this.
Regards
sunnybrad
The problem is in processing the checkbox...I use perl/cgi to create this page which has checkboxes. I put values in there from a data file.
Now when I go ahead and click the checkbox and say the previous value (The value I print there in the form) was zero the value still is what I printed i.e. 0 and not 1 because I checked it.
What I am doing is I think fundamentally flawed. It work for text boxes etc. For check box this way is flawed.
Let me know how to do this.
Regards
sunnybrad
Yes, the value will still be 0. Now normally, if you don't do anything, if the checkbox is not checked an you submit the form, nothing about the checkbox will go through, meaning if you already know which checkboxes are being sent, it would be simple to just set the checkbox value as 1. Then, after you send it, check the URL to see if a checkbox was checked.
The other way would be to use Javascript. You can change the value of the checkbox. Then, when you submit the form, check every single checkbox so all of them will go through with the values you set for them.
(I'm assuming if the checkbox is checked, it's 1, otherwise it's 0).
<html>
<head>
<script language="javascript" type="text/javascript">
<!--
function setCheckBoxes() {
var chkbxes = document.getElementsByTagN ame("input ");
for (var i=0;i<chkbxes.length;i++) {
if (chkbxes[i].type=="checkbo x") {
if (chkbxes[i].checked) {
chkbxes.value = 1;
} else {
chkbxes.value = 0;
chkbxes.checked = true;
}
}
}
}
//-->
</script>
</head>
<body>
<form name="myform" action="myaction" method="POST" onsubmit="setCheckBoxes(); ">
<!--Checkboxes, etc.-->
</form>
</body>
</html>
The above code will only work if the user has Javascript enabled. Also, it should work on almost all recent browsers. If you want a LOT of backward compatibility, the code will have to be modified slightly. Finally, this assumes all the checkboxes on the page should have values of 0 or 1.
The other way would be to use Javascript. You can change the value of the checkbox. Then, when you submit the form, check every single checkbox so all of them will go through with the values you set for them.
(I'm assuming if the checkbox is checked, it's 1, otherwise it's 0).
<html>
<head>
<script language="javascript" type="text/javascript">
<!--
function setCheckBoxes() {
var chkbxes = document.getElementsByTagN
for (var i=0;i<chkbxes.length;i++) {
if (chkbxes[i].type=="checkbo
if (chkbxes[i].checked) {
chkbxes.value = 1;
} else {
chkbxes.value = 0;
chkbxes.checked = true;
}
}
}
}
//-->
</script>
</head>
<body>
<form name="myform" action="myaction" method="POST" onsubmit="setCheckBoxes();
<!--Checkboxes, etc.-->
</form>
</body>
</html>
The above code will only work if the user has Javascript enabled. Also, it should work on almost all recent browsers. If you want a LOT of backward compatibility, the code will have to be modified slightly. Finally, this assumes all the checkboxes on the page should have values of 0 or 1.
ASKER
Hi:
There must be a way in PERL I cannot do things in Javascript. In perl I can do
if ($query->param('donotdistu rb1')){
$donotdisturb1 = $query->param('donotdistur b1');
}
else
{
$donotdisturb1 = 0;
}
So I do check if it is checked but the problem is even when checked it has a value of 0 and the above code will keep it zero.
Show me light on this one brothers.
Best Regards
sunnybrad
There must be a way in PERL I cannot do things in Javascript. In perl I can do
if ($query->param('donotdistu
$donotdisturb1 = $query->param('donotdistur
}
else
{
$donotdisturb1 = 0;
}
So I do check if it is checked but the problem is even when checked it has a value of 0 and the above code will keep it zero.
Show me light on this one brothers.
Best Regards
sunnybrad
Yes. You have to change the value of the checkbox then, and the only way to do that is with Javascript.
function changeCheckBox(chk) {
if (chk.checked) {chk.value=1);}
else {chk.value=0;}
}
<input type="checkbox" value="0" onclick="changeCheckBox(th is);">
function changeCheckBox(chk) {
if (chk.checked) {chk.value=1);}
else {chk.value=0;}
}
<input type="checkbox" value="0" onclick="changeCheckBox(th
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I'm not quite sure what your problem is... Can you elaborate a little? What do you mean by turning the value to 1 and what is in $calldonotdisturb1?
Regards,
Zyloch