javascript - unselecting radio input selection - Stack Overflow

In a part of my application where i check for duplicate radio input selection and revert if its already

In a part of my application where i check for duplicate radio input selection and revert if its already selected to early selection.

Here is my html code ..

<input type="radio" name="A" checked="checked" onclick="return check();" />
<input type="radio" name="A" onclick="return check();" />

<br />

<input type="radio" name="B"  onclick="return check();" />
<input type="radio" name="B" checked="checked" onclick="return check();" />

Here is the javascript code

function check() {
    //logic to check for duplicate selection
    alert('Its already selected');
    return false;
}

And here is the demo The above code works fine. The issue is when the input isn't initially checked. In such condition the radio input selection doesn't revert to unchecked.

NOTE: when in checked state, returning false shows and alert and sets the check box to initial checked state. But when initially in non checked state this doesn't work.

In a part of my application where i check for duplicate radio input selection and revert if its already selected to early selection.

Here is my html code ..

<input type="radio" name="A" checked="checked" onclick="return check();" />
<input type="radio" name="A" onclick="return check();" />

<br />

<input type="radio" name="B"  onclick="return check();" />
<input type="radio" name="B" checked="checked" onclick="return check();" />

Here is the javascript code

function check() {
    //logic to check for duplicate selection
    alert('Its already selected');
    return false;
}

And here is the demo The above code works fine. The issue is when the input isn't initially checked. In such condition the radio input selection doesn't revert to unchecked.

NOTE: when in checked state, returning false shows and alert and sets the check box to initial checked state. But when initially in non checked state this doesn't work.

Share Improve this question edited Mar 18, 2014 at 9:34 iJade asked Mar 18, 2014 at 9:21 iJadeiJade 23.9k58 gold badges161 silver badges250 bronze badges 7
  • 2 There is no logic inside your check function. It runs fine by accident. – Ahmed Abbas Commented Mar 18, 2014 at 9:25
  • Do you even have any check-functionallity? Or Do you looking for the actual check-functionallity? – nils Commented Mar 18, 2014 at 9:26
  • have you seen this stackoverflow./a/9481272/839456? – anurupr Commented Mar 18, 2014 at 9:40
  • 1 @anurupr i don't see how dat helps? – iJade Commented Mar 18, 2014 at 9:42
  • you are trying to unselect a radio button which is already selected? – anurupr Commented Mar 18, 2014 at 9:44
 |  Show 2 more ments

7 Answers 7

Reset to default 4

In DOM ready, check if any radio button is checked or not. If any radio button is checked, increase the counter by one. In onclick of the radio button, check if the counter value is 1. if yes, return false, else increase counter by 1.

try this code,

html

<input type="radio" name="A" checked="checked" />
<input type="radio" name="A" />
<br />
<input type="radio" name="B" />
<input type="radio" name="B" />

JS

var counterA = 0;
var counterB = 0;
$(document).ready(function () {
    if ($("input:radio[name=A]").is(":checked") == true) counterA++;
    if ($("input:radio[name='B']").is(":checked") == true) counterB++;
});

$('input:radio[name=A]').click(function () {
    if (counterA == 1) {
        alert('already checked');
        return false;
    } else {
        counterA++;
    }
});
$('input:radio[name=B]').click(function () {
    if (counterB == 1) {
        alert('already checked');
        return false;
    } else {
        counterB++;
    }
});

SEE THIS DEMO

iJay wants to ask several questions and privides the same answers for each question. Each answer can only be choosen once. If a user clicks the same answer the second time a error-message should be shown.

// get all elements
var elements = document.querySelectorAll('input[type="radio"]');

/**
 * check if radio with own name is already selected
 * if so return false
 */
function check(){

  var selected_name = this.name,
      selected_value = this.value,
      is_valid = true;

  // pare with all other elements
  for(var j = 0; j < len; j++) {
      var el = elements[j];

      // does the elemenet have the same name AND is already selected?
      if(el.name != selected_name && el.value == selected_value && el.checked){
        // if so, selection is not valid anymore
          alert('Oups..! You can not select this answer a second time :( Choose another one!')

        // check current group for previous selection
        is_valid = false;
        break;
      }
  };

  return is_valid;
}

/**
 * bind your elements to the check-routine
 */
for(var i = 0, len = elements.length; i < len; i++) {
    elements[i].onmousedown = check;
}

Here is a DEMO

Use $yourRadio.prop('checked', false); to uncheck the specific radio.

Use like this:

function check() {
    //logic to check for duplicate selection
    var checked = true ? false : true;
    $(this).prop('checked', checked);
    return false;
}

1) add class attribute to same type of checkbox elements(which are having same name)

   ex: class = "partyA"

2)
var sourceIdsArr = new Array();

function check() {
     $('.partyA').each(function() {
 var sourceId = $(this).val();
      if(sourceIdsArr.indexOf(sourceId) != -1){
         sourceIdsArr.push(sourceId );
      }
      else{
         alert('Its already selected');
         return false;
      }
   });

}

Here is your code..

function check() {
        //logic to check for duplicate selection
 var selectflag=0;

 var radiovalue=document.getElementsByName("B");
 for(var i=0;i<radiovalue.length;i++)
 {
    // alert(radiovalue[i].checked);
     if(radiovalue[i].checked==true)
     {
         selectflag=1;
         break;
     }
 }
 if(selectflag==1)
 {
        alert('Its already selected');
        return false;
 }
 return true;
  }

Trigger your event on MouseDown. It will work fine.

I think this is something you are looking for :

<html>
<head>
<script src="http://code.jquery./jquery-1.11.0.min.js"></script>
</head>
<body>

 <input type="radio" name="A" checked="checked"  onclick="return check(this);"/>
 <input type="radio" name="A" onclick="return check(this);"/>
<script>
$( document ).ready(function() {
  this.currentradio = $("input[name='A']:checked")[0];
});
function check(t) {
     var newradio= $("input[name='A']:checked")[0]; 
    if (newradio===document.currentradio){
    alert('already selected');
        return false
    }else{
    document.currentradio = $("input[name='A']:checked")[0];
    }
 }
</script>
</body>
<html>

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745153869a4613997.html

相关推荐

  • javascript - unselecting radio input selection - Stack Overflow

    In a part of my application where i check for duplicate radio input selection and revert if its already

    2小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信