取消选中复选框时,从收音机中删除“选中”
Remove "checked" from radio when a checkbox is unchecked
>我有一个复选框(#FBmngCH
),单击时会显示一组单选按钮(name=adManage
)。 取消单击该复选框时,先前选择的单选按钮仍保持选中状态。我希望在取消选中复选框后删除单选按钮的选中状态。
这是在表单中使用,因此如果用户改变主意选择该服务,我希望有关该服务的详细信息也被擦除(因此所选无线电的值不会最终出现在PHP中,最终不会出现在电子邮件中)。 我希望这是有道理的。
我已经给了它相当长的时间,但似乎没有让它正常工作。 最后一组 if 语句是我编写的代码的一部分。 不确定我是否错过了什么,选择了错误的东西,还是什么。任何这方面的帮助将不胜感激。 谢谢!
.HTML
<li>
<input type="checkbox" class="cbox" name="FBchecks[]" value="Facebook Ad MGMT" id="FBmngCH">
<label for="test">Facebook Ad Management</label>
<ul id="FBmngList">
<li>
<input type="radio" name="adManage" value="Ad Management 1" id="adMan1">
<label for="adMan1">Ad Fund - 1</label>
</li>
<li>
<input type="radio" name="adManage" value="Ad Management 2" id="adMan2">
<label for="adMan2">Ad Fund - 2</label>
</li>
<li>
<input type="radio" name="adManage" value="Ad Management 3" id="adMan3">
<label for="adMan3">Ad Fund - 3</label>
</li>
<li>
<input type="radio" name="adManage" value="Ad Management 4" id="adMan4">
<label for="adMan4">Ad Fund - 4</label>
</li>
<div id="FBADerror" class="acctError"></div>
</ul>
</li>
.JS
$FBmngCH = $("#FBmngCH");
$FBmngList = $("#FBmngList");
//hide FB Management List
$FBmngList.hide();
//on FB Management select
$FBmngCH.click(function() {
//toggle FB Management List
$FBmngList.toggle();
});
$FBadValid = false;
$FBADerror = $("#FBADerror");
//if FB Ad Management is checked
if ($FBmngCH.attr('checked')) function validateFB() {
$("input[name=adManage]").each(function () { //LoopingthroughradioButtons
// "this" is the current element(radio) in the loop
if ($(this).is(':checked')) {
$FBadValid = true; //Radio Button is Checked);
}
if ($FBadValid.attr = true ) {
$FBADerror.empty();
}
});
};
if ($FBmngCH.blur($FBadValid.attr = false)) {
$FBADerror.append("<li> Please select a Facebook Ad plan. </li>");
//appends error to document
}
if ($FBmngCH.blur($FBmngCH.not('checked'))) {
$("input[name=adManage]").each(function () {
if ($(this).is(':checked')) {
$("input[name=adManage]").removeAttr('checked');
}
});
//remove checks from radios
};
$("input[name=adManage]").click(validateFB);
也许我不了解您的要求,但您不能在复选框事件例程中对此进行测试并取消选中选中的单选按钮:
$FBmngCH.click(function () {
//toggle FB Management List
$FBmngList.toggle();
if (!$FBmngList.attr('checked')) {
$FBmngList.find('input:checked').attr('checked', false);
}
});
看到这个小提琴。
代码中几乎没有错误:
if ($FBmngCH.blur($FBadValid.attr = false)) {
这不是正确的语法。它应该是:
$FBmngCH.blur(function(){
if ($FBadValid === false) {
}
});
基本上,由于您正在切换整个无线电部分并愿意在不检查任何条件的情况下删除其:checked
属性,因此您不需要循环或if($(this).is(':checked'))
语句。只需从所有收音机中删除:checked
属性即可。您还可以在每次单击复选框时显示错误消息,无需if
条件,因为整个部分无论如何都是隐藏的。
你最终应该得到非常短的代码,如下所示:
$FBmngCH = $("#FBmngCH");
$FBmngList = $("#FBmngList").hide();
$FBADerror = $("#FBADerror");
$FBmngCH.click(function() {
// no need for loops and if's there. Radios and the message are hidden.
$FBmngList.toggle();
$FBADerror.html("<li> Please select a Facebook Ad plan. </li>");
$("input[name=adManage]").prop('checked', false);
});
$("input[name=adManage]").click(function(){
// no need for loops there. Radios and the message are hidden.
// Also, no need for if($(this).is(':checked')){. Since it's a click handler, something has to be :checked on radio click.
$FBADerror.empty();
});
演示
相关文章:
- 通过选中和取消选中复选框来添加和删除数组中的值
- 取消选中复选框时,从收音机中删除“选中”
- 从选中的项目数组中删除特定 ID
- 取消选中特定复选框时,React切换不删除的选择字段
- Knockoutjs通过选中复选框来删除多个
- 如果选择框已在其他框中选中,则从该框中删除选项
- 删除 :选中 输入与按钮的文本
- 正在从阵列中删除选中的项目
- jquery设置并删除选中的属性dons'不起作用,javascript起作用
- 使用全选验证删除选中的复选框项目
- 当我再次单击复选框时,如何删除选中的属性
- 删除选中的复选框
- 使用先前的值填充下拉列表,同时删除选中的值
- 删除选中的文本粗体和前景?没有execCommand
- 如何使用select标签的title属性删除选中的选项
- 删除选中的(突出显示的元素)键上的功能
- 在angular js中,点击按钮时删除选中的行
- 如何从列表中删除选中的复选框并将其添加到另一个列表中
- 简单的todos应用程序教程,试图创建一个函数,从Mongo集合中删除选中的任务
- 点击删除选中并显示/隐藏删除按钮和下拉标题