【发布时间】:2018-12-19 21:30:08
【问题描述】:
我目前正在尝试构建一个带有复选框的列表,这些复选框可以轻松选中/取消选中以包含或排除。当页面加载时,大多数列表项将具有复选框“已选中”属性以显示该项目已包含在内。我试图在用户更改选择时更改复选框属性,以便我可以保存结果。
我尝试了一些我在 Stackoverflow 上找到的组合,但没有一个改变属性,我不确定我做错了什么。
function check() {
if ($("#working").prop("checked", true)) {
$("#working").prop("checked", false)
} else {
$("#working").prop("checked", true)
}
}
var data = {
id: document.getElementById('workingId').value,
visible: document.getElementById('working').checked
};
$(document).on("click", ".save", function() {
alert(data);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="hidden" id="workingId" value="13245">
<input type="checkbox" name="working" id="working" onclick="check(this);" checked> I am a check box
<button type="button" class="btn save"> Save</button>
我希望打印一个数组,该数组具有复选框 (12345) 的 ID,以及该复选框现在是否已选中/未选中。对此的任何帮助将不胜感激。
【问题讨论】:
-
为什么必须在点击时更改复选框?这就是它已经做的......
-
您在页面加载时设置
data,而不是在用户点击时更新它。 -
在小提琴中你需要使用“No wrap”设置来使
check()成为一个全局函数。见stackoverflow.com/questions/5431351/… -
单击复选框会自动更改属性。然后,您的代码将撤消该更改。
-
if ($("#working").prop("checked", true))不是测试属性的正确方法。它将属性设置为true。使用if ($("#working").prop("checked") == true)或仅使用if ($("#working").prop("checked"))
标签: javascript jquery html