【发布时间】:2019-09-25 17:23:08
【问题描述】:
我正在尝试设置复选框的value,如果选中value 是active,但如果未选中value 是disabled。
下一个代码适用于文本,当复选框被选中或取消选中时,文本会发生变化,但是当复选框被取消选中时,发布到数据库的值是null。
HTML
<input type="checkbox" name="cat_status" class="inline checkbox" id="checkbox" checked value="active" onclick="cat_check()">
<label id="text" style="display:Active">Active</label>
JS
function cat_check() {
var checkBox = document.getElementById('checkbox');
var text = document.getElementById('text');
if (checkBox.checked == false) {
text.style.display = "inline";
document.getElementById('checkbox').value = "active";
} else {
text.style.display = "none";
document.getElementById('checkbox').value = "disable";
}
}
当复选框未选中时,我希望发布到数据库的值是disabled,但目前得到的是null。
更新:
根据提供的答案反馈添加了一个固定版本,包括AJAX 调用。这是以防万一有人遇到同样的问题。
如果您使用serialize() 文档底部的示例,您将看到未选中的复选框未附加该值。您将不得不手动进行。也许这可以帮助你:how can I override jquery's .serialize to include unchecked checkboxes
HTML
<form method="post" class="add_sub_categories">
<input type="checkbox" name="cat_status" class="inline checkbox" id="checkbox" checked value="active" onclick="cat_check()">
<label id="text" style="display:Active">Active</label>
<a class="btn btn-xs btn-info save_main_cat">GO!</a>
</form>
JS
function cat_check() {
var checkBox = document.getElementById('checkbox');
var text = document.getElementById('text');
if (checkBox.checked == true) {
text.style.display = "inline";
} else {
text.style.display = "none";
}
}
AJAX
$(document).ready(function() {
$(".save_main_cat").click(function() {
var data = $('.add_main_categories').serialize();
/* This code will include the value for the checkbox when unchecked */
$(".add_main_categories input:checkbox:not(:checked)").each(function(e) {
data += "&"+this.name+'=disable';
});
$.ajax({
type: 'POST',
url: "<?= base_url() ?>admin_ajx/categories_ajx/update_main_categories",
data: data,
success: function() {
$('#addCat').modal('hide');
$(".add_main_categories")[0].reset();
dttable.destroy();
$(document).ready(function() {
main_cat(), main_cat_option(), dt_tables();
});
}
});
});
});
【问题讨论】:
-
这里有很多问题。 1) 不要将您的 ID 命名为与元素相同的名称。通常你的
name和id是一样的。 2) 你已经有一个checkBox的变量。没有理由在if/else声明中再次获得它。使用变量。 3)您正在切换您的true/false值。如果false(未选中),则该值现在是“活动的”。它应该被切换。 4)display:Active不是一个有效的样式
标签: javascript jquery ajax codeigniter checkbox