javascript - 选中时复选框值不会更改
问题描述
我有一个复选框,我用 CSS 设置样式,我的问题是当我使用 AJAX 将复选框的值发送到控制器时,值保持不变。
例如,我的 Checkbox-value 为 False (0),然后我单击 Checkbox,Checkbox 设置为 True (1),然后我使用 AJAX 将值发送到控制器,但控制器仍然得到 False (0) .
function success(data) {
var rows;
if (data != null) {
$.each(data, function(i, item) {
rows += "<tr>" +
"<td>" +
"<label class='checkbox-container' id ='checkbox-container'>" +
item.Name +
`<input type='checkbox' class='myCheckbox' id = 'myCheckbox' value='${item.IsActive}' ${item.IsActive ? 'checked' : ''} />` +
"<span class='checkmark'>" + "</span>" +
"</label >" +
"</td>"
});
$('#myTable tbody').append(rows);
} else {
alert("Something went wrong");
}
}
function UpdateRefiInstituteById() {
var checkboxValues = $('input[type="checkbox"].myCheckbox').map(function() {
return $(this).val();
}).toArray();
$.ajax({
type: "POST",
url: '/Manage/UpdateRefiInstituteById',
dataType: 'json',
data: {
IsActive: checkboxValues
},
traditional: true,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
}
解决方案
$('input[type="checkbox"].IsActive')
正在尝试选择带有 的复选框class='IsActive'
。在您的情况下,您的复选框具有class='myCheckbox'
.
将行更改为$('input[type="checkbox"].myCheckbox')
。
更新
var checkboxValues = $('input[type="checkbox"].myCheckbox').map(function() {
return $(this).prop('checked');
}).toArray();
如果您需要 0 或 1 作为未选中和选中,只需执行
return $(this).prop('checked') ? '1' : '0';
推荐阅读
- vue.js - 在选项中添加元素
- sql - 当 SQL 中的其他属性也不为空时,该属性不为空
- google-cloud-scheduler - 谷歌云调度访问
- mysql - 如何使用mysql在单个数据库中复制十个数据库表
- css - Gulp 和关键 CSS - TypeError:无法读取未定义的属性“内容类型”
- python - 将 drawstyle "steps-mid" 与 x-log-scale 一起使用会导致步进点不居中
- json - 删除 Json 文件中的密钥
- arrays - 获取最后一项数组弹出
- json - 一个结构的多个 Json 条目
- maven - 在 Maven 中,如何使我的构建版本使用其依赖项之一的版本?