Solved

jquery check the radio button checked

Posted on 2014-01-17
13
532 Views
Last Modified: 2014-02-05
I have a set of the radio buttons when I click the radio button I have a specific logic. That is working when i make a selection. When I load a page initially it start looping through all the radio button whether it should just find the one that is check and do the logic.

$('input:radio[name="rdn"]').change(function(){
				 if ($("input[name='rdn']:checked").val() > 0) {
				 	var x = $(this).attr('data-x');
					if ($("#ShowFeedback").val() == 0){
						$("#feedback-feedback").hide();
					}else{
						if ($("#ScoredFeedback").val() > 0){
							alert('hello');
							if (($("#ScoredFeedback").val() == 1 && x >= $("#FeedbackScore").val()) ||  ($("#ScoredFeedback").val() == 2 && x <= $("#FeedbackScore").val())  ){
								alert('hello2');
								$("#feedback-feedback").hide();	
							}else{
								alert('hello3');
								$("#feedback-feedback").show();	
								 
								if ($("#leaveNote").text().length == 0){
									var errMsg = "<ul>";
									errMsg = errMsg+"<li>The feedback is required</li>";
									errMsg=errMsg+"</ul>";
									$("div#errMsg").css("background-color", "red");
									$("div#errMsg").html(errMsg);
									return false;
								}
							}
						}
						
					}
				 }else{
				 	$("#feedback-feedback").hide();
				 }
				//return false;
			}).change();

Open in new window

0
Comment
Question by:erikTsomik
  • 7
  • 5
13 Comments
 
LVL 58

Expert Comment

by:Gary
ID: 39789272
What is the question?

p.s. use the code block tag when adding code
0
 
LVL 19

Author Comment

by:erikTsomik
ID: 39789285
The question is when just arrive on the page why does it loop through all radio buttons when it should only executes when the one of the radio buttons is selected
$('input:radio[name="rdn"]').change(function(){
				 if ($("input[name='rdn']:checked").val() > 0) {
				 	var x = $(this).attr('data-x');
					if ($("#ShowFeedback").val() == 0){
						$("#feedback-feedback").hide();
					}else{
						if ($("#ScoredFeedback").val() > 0){
							alert('hello');
							if (($("#ScoredFeedback").val() == 1 && x >= $("#FeedbackScore").val()) ||  ($("#ScoredFeedback").val() == 2 && x <= $("#FeedbackScore").val())  ){
								alert('hello2');
								$("#feedback-feedback").hide();	
							}else{
								alert('hello3');
								$("#feedback-feedback").show();	
								 
								if ($("#leaveNote").text().length == 0){
									var errMsg = "<ul>";
									errMsg = errMsg+"<li>The feedback is required</li>";
									errMsg=errMsg+"</ul>";
									$("div#errMsg").css("background-color", "red");
									$("div#errMsg").html(errMsg);
									return false;
								}
							}
						}
						
					}
				 }else{
				 	$("#feedback-feedback").hide();
				 }
				//return false;
			}).change();

Open in new window

0
 
LVL 58

Expert Comment

by:Gary
ID: 39789296
Line 32 of your code above - remove

.change()
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 19

Author Comment

by:erikTsomik
ID: 39789603
I can not remove that line because if i come to the page that already been pre populated I want to have a trigger then too. Otherwise it will only work when I make a change not when the data is already there
0
 
LVL 58

Expert Comment

by:Gary
ID: 39789611
Then you need a separate trigger if the page is already filled in.  Something along the lines of

if($("#some_element_that_would_be_filled_in").val()!=""){
     $('input:radio[name="rdn"]').change()
}


You cannot have your function chained with a change() function if you want to prevent it running
0
 
LVL 19

Author Comment

by:erikTsomik
ID: 39789644
I did this and it does not work

 if ($("input[name='rdn']:checked").length > 0) {
                         $("input[name='rdn']:checked").change();
                   }
0
 
LVL 58

Expert Comment

by:Gary
ID: 39789743
Try

if (!$("input[name='rdn']:checked").val()) {
0
 
LVL 12

Expert Comment

by:mkishline
ID: 39789764
To Cathal's point about the separate trigger, you can also fire the change after defining your method:

$(document).ready(function(){
	$('input:radio[name="rdn"]').change(function(){
		if ($(this).val() > 0) {
		   var x = $(this).attr('data-x');
		   if ($("#ShowFeedback").val() == 0){
			   $("#feedback-feedback").hide();
		   }else{
			   if ($("#ScoredFeedback").val() > 0){
				   alert('hello');
				   if (($("#ScoredFeedback").val() == 1 && x >= $("#FeedbackScore").val()) ||  ($("#ScoredFeedback").val() == 2 && x <= $("#FeedbackScore").val())  ){
					   alert('hello2');
					   $("#feedback-feedback").hide();	
				   }else{
					   alert('hello3');
					   $("#feedback-feedback").show();	
						
					   if ($("#leaveNote").text().length == 0){
						   var errMsg = "<ul>";
						   errMsg = errMsg+"<li>The feedback is required</li>";
						   errMsg=errMsg+"</ul>";
						   $("div#errMsg").css("background-color", "red");
						   $("div#errMsg").html(errMsg);
						   return false;
					   }
				   }
			   }
			   
		   }
		}else{
		   $("#feedback-feedback").hide();
		}
	   //return false;
	});
	$('input:radio[name="rdn"]:checked').change();
});

Open in new window

0
 
LVL 58

Expert Comment

by:Gary
ID: 39789790
He wants it firing according to a condition, not every time.
0
 
LVL 19

Author Comment

by:erikTsomik
ID: 39789828
But on page load I need the change event to fire if there already a selection, not only whne the user make a selection
0
 
LVL 58

Expert Comment

by:Gary
ID: 39789836
Did you try
if (!$("input[name='rdn']:checked").val()) {
0
 
LVL 19

Author Comment

by:erikTsomik
ID: 39789897
I did but still does not work that why I had change() at the end but it loops through all radio buttons
0
 
LVL 58

Accepted Solution

by:
Gary earned 500 total points
ID: 39789902
Oops had it wrong

if ($("input[name='rdn']:checked").val()!="") {
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

OverviewThis article demonstrates a simple search form using AJAX. The purpose of the article is to demonstrate how to use the same code to render a page and javascript (JQuery) and AJAX to make subsequent calls to refine the results. The princip…
Introduction Knockoutjs (Knockout) is a JavaScript framework (Model View ViewModel or MVVM framework).   The main ideology behind Knockout is to control from JavaScript how a page looks whilst creating an engaging user experience in the least …
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question