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