如何使用jQuery显示带有单选按钮的特定警报?

如何使用jQuery显示带有单选按钮的特定警报?,jquery,Jquery,我有一个带有两个单选按钮的表单,“是”和“否”,用于切换div的可见性 如果仅在已选择“是”选项时才选择“否”,我希望向用户显示警报 如果未选择任何一个选项且单击了“否”,则不应显示警报 $('.toggle').on('change',function(){ var showOrHide = false; $(this).siblings('input[type=radio]').andSelf().each(function() { if ($(this

我有一个带有两个单选按钮的表单,“是”和“否”,用于切换div的可见性

如果仅在已选择“是”选项时才选择“否”,我希望向用户显示警报

如果未选择任何一个选项且单击了“否”,则不应显示警报

$('.toggle').on('change',function(){

    var showOrHide = false;

    $(this).siblings('input[type=radio]').andSelf().each(function() {

        if ($(this).val() == 1 && $(this).prop("checked")) showOrHide = true;

    })    

    $(this).parent().parent().next('.group').toggle(showOrHide);    

}).change()  

处理此问题的一种方法是仅在选中“是”按钮时应用处理程序,并在选中“否”按钮时将其删除。我假设两个按钮都未选中,否则至少有一个按钮会被选中,第二个条件将不适用

$('.toggle[value="Yes"]').on('change', function() {
   $('.toggle[value="No"]').off('change');
   if (this.checked) {
      $('.toggle[value="No"]').on('change', function() {
           // show your alert
      });
   });
});

这里有一个技巧可以完成这项工作- 在页面中设置一个不可见字段,指示是否选择了“是”按钮- 例如—

<input type="hidden" value="no" name="isYesChosen">

现在,当检查“是”收音机时,启动一个函数,将“IsYesSchosen”的值设置为“是”

现在,只有当检查输入的值为“是”时,才能启动切换按钮 (在jquery代码的开头添加一个简单的if语句)。
请注意,如果您有任何trubble,请使用变量存储已选择的值

HTML

编辑:根据您的评论,如果页面加载中已选中一个单选按钮,请使用此代码

页面加载后,获取已选中的项并将其存储在“alreadySelected”变量中。这是更新后的代码

var alreadySelected="";
 $(function(){
    alreadySelected=$('input[name=rad]:checked').val()
 })
 $("input").click(function(){
   if(alreadySelected=="Yes")
   {
     alert("You are switching from Yes");
   }
  alreadySelected=$(this).val();
});

这是正在运行的演示:

到此结束。它适用于第一次单击,但警报始终在选择选项后显示。请参阅@Michael-您使用的
val()
不正确。我想您需要
切换[value=“0”]
切换[value=“1”]
或使用
eq
。看到这个更新的提琴:我的选择器中确实有一个额外的空间,我现在已经删除了。明白了。差不多了。当选择“否”时,div不会再次隐藏。这几乎是完美的,但如果在页面加载时选择“是”单选按钮,则无法工作。如果在这种情况下选择“否”,则不会显示警报@Michael:读取页面加载中已选择的值。我更新了我的答案&jsfiddle链接来处理这个场景。
var alreadySelected="";
$("input").click(function(){
  if(alreadySelected=="Yes")
  {
     alert("You are switching from Yes");
  }
  alreadySelected=$(this).val();
});
var alreadySelected="";
 $(function(){
    alreadySelected=$('input[name=rad]:checked').val()
 })
 $("input").click(function(){
   if(alreadySelected=="Yes")
   {
     alert("You are switching from Yes");
   }
  alreadySelected=$(this).val();
});