javascript radio buttons and insanity

Please support our JavaScript / DHTML / AJAX advertiser: PostgreSQL or MySQL? Compare and contrast the two most popular open source databases
Reply

Join Date: Mar 2006
Posts: 5
Reputation: davidpitts is an unknown quantity at this point 
Solved Threads: 0
davidpitts davidpitts is offline Offline
Newbie Poster

javascript radio buttons and insanity

 
0
  #1
Mar 20th, 2006
I am (as you will quickly discover) a novice javascript coder. Here is my issue. I am using a radio button, and it works fine. Then when I change some other element on the page, or hit refresh, the radio button does not remain set. You can see it in action here:

http://claytargetsonline.com/radio2.php?type=line

I have tried check to see which one is checked and every other solution I can think of. I have asked experienced programmers, and didn't want to waste more than 10 minutes of their time, but it was not obvious to them either.

I have spent about 5 hours searching the web. No avail. Help!

I did search this forum also but did not find a similar problem.

Any help woule be appreciated.

David

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. <script type="text/javascript">
  2.  
  3. function check(charttype)
  4. {
  5. document.getElementById("chartType").value=charttype
  6. }
  7.  
  8. function refresh_window()
  9. {
  10.  
  11. var type = document.getElementById("chartType").value
  12. window.location=("radio2.php?type=" + type)
  13.  
  14. }
  15.  
  16.  
  17. </script>
  18.  
  19.  
  20. <form id="form1" action="(EmptyReference!)" method="put" name="form1">
  21.  
  22. <table width="415" border="0" cellspacing="2" cellpadding="0">
  23. <tr>
  24. <td width="297"><strong>Chart Type:</strong></td>
  25. <td valign="bottom" width="112">&nbsp;</td>
  26. </tr>
  27. <tr>
  28. <td width="297">
  29. <input type="radio" name="chartType" id="chartType" value="line" onclick="check(this.value)" <?php if ($type == "line") echo "CHECKED" ?> > line &nbsp;
  30. <input type="radio" name="chartType" id="chartType" value="column" onclick="check(this.value)" <?php if ($type == "column") echo "CHECKED"?> > column <input type="radio" name="chartType" id="chartType" value="3dcolumn" onclick="check(this.value)" <?php if ($type == "3dcolumn") echo "CHECKED"?> > 3d column
  31. </td>
  32. <td align="right" rowspan="2" valign="bottom" width="112">
  33. <button name="refresh" type="button" onclick="refresh_window()">Refresh Chart </button>
  34. </td>
  35. </tr>
  36. <tr>
  37. <td width="297"></td>
  38. </tr>
  39. </table>
  40.  
  41. </form>
  42. <p>The problems is this. </p>
  43. <p>Set the chart type to column and hit refresh. Everything works.</p>
  44. <p>Now hit refresh again. Chart type changes to line.</p>
  45. <p>I hope someone can help me with this. I am losing my mind.</p>
Reply With Quote Quick reply to this message  
Join Date: Dec 2004
Posts: 1,655
Reputation: tgreer is an unknown quantity at this point 
Solved Threads: 35
Team Colleague
tgreer tgreer is offline Offline
Made Her Cry

Re: javascript radio buttons and insanity

 
0
  #2
Mar 20th, 2006
Not sure I understand the problem. Hitting "Refresh" will, well, refresh the page. No value would be expected to remain, every element would naturally go back to the initial, default values.
Reply With Quote Quick reply to this message  
Join Date: Dec 2004
Posts: 2,413
Reputation: Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough 
Solved Threads: 211
Team Colleague
Comatose's Avatar
Comatose Comatose is offline Offline
Taboo Programmer

Re: javascript radio buttons and insanity

 
0
  #3
Mar 20th, 2006
The answer is simple. You have the onclick events launched when you click a radio button. That function (check) sets a document item to the value of the clicked option. Then when you execute a refresh_window, that value is still valid in that page element, when you read the value in order to pass it to window.location, which is good, but when the page refreshes, so does the page element that normally gets set by the check function. So, since the check function isn't executed again, it resorts to it's default value. You can illustrate this, by going to the page, choosing an option, and click refresh, then click the same option, and click refresh again..... as long as you click an option, it remains checked on the refresh... it's only when you do a refresh, and then another refresh (because you aren't calling the check function on the second refresh) that it loses it's value. Now, I'm no programmer, but I'd suggest trying to add a call to the check function inside the refresh_window function....


As a very last resort, assuming the above doesn't solve the issue.... you could have the page write a cookie, and then read the cookie for the value that was previously set.... a tacky fix, but one that would probably work.
Reply With Quote Quick reply to this message  
Join Date: Mar 2006
Posts: 5
Reputation: davidpitts is an unknown quantity at this point 
Solved Threads: 0
davidpitts davidpitts is offline Offline
Newbie Poster

Re: javascript radio buttons and insanity

 
0
  #4
Mar 20th, 2006
I tried to simplify the code so that it would be the simplest for asking the question. Maybe the full example of what I am trying to do would be better.

I understand what you are saying about refresh setting the state back to the default, but checkboxes stay checked, why do radio buttons reset?

http://claytargetsonline.com/napl/ch...alse&type=line

This link will take you to the charting program that I am working on. If you select a column chart and hit refresh, everything works great. Then if you change ONLY the number of Months and refresh again, it resets the chart type to line.

Any suggestions for how to preserve the setting for columns? Neither the drop down nor the checkboxes seem to have the problem.

Thanks for the responses so far.
Reply With Quote Quick reply to this message  
Join Date: Dec 2004
Posts: 2,413
Reputation: Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough 
Solved Threads: 211
Team Colleague
Comatose's Avatar
Comatose Comatose is offline Offline
Taboo Programmer

Re: javascript radio buttons and insanity

 
0
  #5
Mar 20th, 2006
Yeah, I said cookies....

But beyond, the code that you have in both what you posted, and the site in the link..... when you click the radio button, it executes an onclick event.... right? That function is called "check", and it gets called when you click an option button. The check box's don't call any kind of function at all, but the option buttons do. Why the checkbox's retain their value, and the option buttons do not, is beyond me.... but I'll bet if you call the check function within the refresh_window function, it should work just fine.... Look carefully at this line:
JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. <input type="radio" name="chartType" id="chartType" value="column" onclick="check(this.value)" > column
onclick, it calls check(this.value), when you hit refresh, the first time, it works if you change the option button, because you clicked the option button, and it called this function... when you click it the second time, it never calls "check".... ever. Not once... it needs to. So, somewhere in the refresh_window function, you need to have it call the check function.

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. function refresh_window()
  2. {
  3. var type = document.getElementById("chartType").value
  4. check(type);
  5. window.location=("radio2.php?type=" + type)
  6. }

Or something along those lines...
Reply With Quote Quick reply to this message  
Join Date: Mar 2006
Posts: 5
Reputation: davidpitts is an unknown quantity at this point 
Solved Threads: 0
davidpitts davidpitts is offline Offline
Newbie Poster

Re: javascript radio buttons and insanity

 
0
  #6
Mar 20th, 2006
Thanks. I will give it a try.
Reply With Quote Quick reply to this message  
Join Date: Mar 2006
Posts: 5
Reputation: davidpitts is an unknown quantity at this point 
Solved Threads: 0
davidpitts davidpitts is offline Offline
Newbie Poster

Re: javascript radio buttons and insanity

 
0
  #7
Mar 22nd, 2006
OK. I tried, but I never got it to work. Thanks for the help, but now a lovely dropdown menu that does work sits in place of the radio buttons. I am a beaten man. :-|
Reply With Quote Quick reply to this message  
Join Date: Dec 2004
Posts: 2,413
Reputation: Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough 
Solved Threads: 211
Team Colleague
Comatose's Avatar
Comatose Comatose is offline Offline
Taboo Programmer

Re: javascript radio buttons and insanity

 
0
  #8
Mar 22nd, 2006
Reply With Quote Quick reply to this message  
Join Date: Dec 2004
Posts: 2,413
Reputation: Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough Comatose is a jewel in the rough 
Solved Threads: 211
Team Colleague
Comatose's Avatar
Comatose Comatose is offline Offline
Taboo Programmer

Re: javascript radio buttons and insanity

 
0
  #9
Mar 22nd, 2006
why not use cookies?
Reply With Quote Quick reply to this message  
Join Date: Mar 2006
Posts: 5
Reputation: davidpitts is an unknown quantity at this point 
Solved Threads: 0
davidpitts davidpitts is offline Offline
Newbie Poster

Re: javascript radio buttons and insanity

 
0
  #10
Mar 25th, 2006
Originally Posted by Comatose
why not use cookies?
Remember the part at the start of the thread about being inexperienced? Well cookies is still something that I have not done. :o Soon though. I just can't figure out why the radio buttons lose their value and dropdowns and checkboxes don't. Go figure.

Thanks for your help. It is much appreciated.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the JavaScript / DHTML / AJAX Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC