Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 614
  • Last Modified:

jquery check the radio button checked

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
erikTsomik
Asked:
erikTsomik
  • 7
  • 5
1 Solution
 
GaryCommented:
What is the question?

p.s. use the code block tag when adding code
0
 
erikTsomikSystem Architect, CF programmer Author Commented:
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
 
GaryCommented:
Line 32 of your code above - remove

.change()
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
erikTsomikSystem Architect, CF programmer Author Commented:
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
 
GaryCommented:
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
 
erikTsomikSystem Architect, CF programmer Author Commented:
I did this and it does not work

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

if (!$("input[name='rdn']:checked").val()) {
0
 
mkishlineCommented:
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
 
GaryCommented:
He wants it firing according to a condition, not every time.
0
 
erikTsomikSystem Architect, CF programmer Author Commented:
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
 
GaryCommented:
Did you try
if (!$("input[name='rdn']:checked").val()) {
0
 
erikTsomikSystem Architect, CF programmer Author Commented:
I did but still does not work that why I had change() at the end but it loops through all radio buttons
0
 
GaryCommented:
Oops had it wrong

if ($("input[name='rdn']:checked").val()!="") {
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 7
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now