Forum Moderators: open

Message Too Old, No Replies

Two checkbox changes breaks script

         

tomda

8:06 am on Mar 30, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Need some help.
This simple script is self-explanatory and works fine when I am changing ONE checkbox in ONE category. But everything goes wrong when I change TWO checkboxes in ONE category. Any help would appreciated


<html>
<head>
<script language="javascript" type="text/javascript">
function change(code){
var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur;
return false; } else{ document.form.res.value += ' '+code+' '; return true;} }

function change2(code){
var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur;
return false; } else{ document.form.res.value += ' '+code+' '; return true;} }
</script>

</head>
<body>
<form name="form">
<input type="text" name="res" size="50"><br>

<!--<input type="checkbox" name="case1" value="A" onclick="change('A.');" >--> Category A.

<input type="checkbox" name="cocher" value="2b"
onclick="change2('CatA');change('2a');"> 2a

<input type="checkbox" name="cocher" value="2a"
onclick="change2('CatA');change('2b');"> 2b

<br>

<!--<input type="checkbox" name="case2" value="B" onclick="change('B.');" >--> Category B.

<input type="checkbox" name="cocher" value="3a"
onclick="change2('CatB');change('3a');"> 3a

<input type="checkbox" name="cocher" value="3b"
onclick="change2('CatB');change('3b');"> 3b
</form>
</body>
</html>

grahamstewart

8:19 am on Mar 30, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Using Javascript will make the form unusable to people who deactivate Javascript which some estimate to be as high as 10% of surfers.

tomda

8:49 am on Mar 30, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Hi Graham,

I know but the form is mostly use by the moderator who is javascript enable.

Tomda

tomda

9:21 am on Mar 30, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



This one works great, but it is long (a new function change2()) per category. Is there a way to use a variable i and use the for/while i statement?
<html>
<head>
<script type="text/javascript">
function tester1(coche) {
if (document.form.cocher1a.checked == true ¦¦ document.form.cocher1b.checked == true) {document.form.case1.checked = true;}
else {document.form.case1.checked = false; } }

function tester2(coche) {
if (document.form.cocher2a.checked == true ¦¦ document.form.cocher2b.checked == true) {document.form.case2.checked = true;}
else {document.form.case2.checked = false; } }

function change(code){
var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur;
return false; } else{ document.form.res.value += ' '+code+' '; return true;} }

function change1(code){
if (document.form.case1.checked == true) {
var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
//valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur; return false; }
else { document.form.res.value += ' '+code+' '; return true;} }

var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur;
return false; } else{ document.form.res.value += ' '+code+' '; return true;} }

function change2(code){
if (document.form.case2.checked == true) {
var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
//valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur; return false; }
else { document.form.res.value += ' '+code+' '; return true;} }

var valeur = document.form.res.value;
if(valeur.search(code)!= -1) {
valeur = valeur.replace(' '+code+' ', '');
document.form.res.value = valeur;
return false; } else{ document.form.res.value += ' '+code+' '; return true;} }
</script>

</head>
<body>
<form name="form">
<input type="text" name="res" size="50"><br>

<input type="checkbox" name="case1" value="A" > Category A.

<!-- <input type="checkbox" name="cocher" value="2a" onclick="change('2a');tester1(this);">2a-->
<input type="checkbox" name="cocher1a" value="2a" onclick="tester1(this);change1('CatA');change('2a');"> 2a

<input type="checkbox" name="cocher1b" value="2b" onclick="tester1(this);change1('CatA');change('2b');">2b
<!-- <input type="checkbox" name="cocher" value="2a" onclick="change2('CatA');change('2b');"> 2b -->


<br>

<input type="checkbox" name="case2" value="B" onchange="change('B.');" > Category B.

<input type="checkbox" name="cocher2a" value="3a"
onclick="tester2(this);change2('CatB');change('3a');"> 3a

<input type="checkbox" name="cocher2b" value="3b"
onclick="tester2(this);change2('CatB');change('3b');"> 3b
</form>
</body>
</html>

Rambo Tribble

1:50 pm on Mar 30, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



To replace all the instances of a string within a target string, the string.replace() function must use the global /g attribute.