首先,不要将此作为重复处理,因为我做了一些尝试&错误,以及在询问之前的研究。我打算从jquery发布值,包括未选中的复选框。我尝试了很多方法,但仍然没有设法使其工作,或者由于我的代码结构或其他原因。这是我目前尝试的尝试之一:
function toggle_tip() {}
$('#l_sync_ul').click(function() {
if ($('#l_sync_ul').prop("checked") == undefined) {
$('#l_sync_ul').after('<input type="hidden" name="' + $('#l_sync_ul').attr("l_sync_ul") + '" value=off>')
} else {
$('#l_sync_ul').next().remove();
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input name="l_sync_ul" id="l_sync_ul" onclick="toggle_tip('ul_dept')" type="checkbox">
&#13;
只需忽略&#39; onclicks&#39;属性,因为我用它来切换表格。
答案 0 :(得分:1)
您.prop("checked")
只会返回true
或false
。当您使用jQuery时,我建议您使用它直接绑定change
事件处理程序。
$('#l_sync_ul').change(function() {
if (!this.checked) {
$(this).after('<input type="hidden" name="' + $(this).attr("name") + '" value=off>')
} else {
$(this).next().remove();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input name="l_sync_ul" id="l_sync_ul" type="checkbox">*Just ignore the 'onclicks' attribute since I'm using it for toggle the table.*
答案 1 :(得分:1)
$('#l_sync_ul').prop("checked")
本身是一个布尔值,无需检查undefined
。
您可以使用checkbox
事件监听器跟踪.change
。
function toggle_tip() {}
$(document).ready(function() {
$('#l_sync_ul').click(function() {
if ($('#l_sync_ul').prop("checked")) {
console.log("Checked");
$('#l_sync_ul').after('<input type="hidden" name="' + $('#l_sync_ul').attr("l_sync_ul") + '" value=off>')
} else {
console.log("Un Checked");
$('#l_sync_ul').next().remove();
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input name="l_sync_ul" id="l_sync_ul" onclick="toggle_tip('ul_dept')" type="checkbox">
答案 2 :(得分:1)
不是100%确定你想要什么,但这会更好用
$('#l_sync_ul').click(function() {
if (!$(this).is(":checked")) {
$(this).after('<input type="hidden" name="' + $(this).attr("name") + '" value=off>')
} else {
$(this).next().remove();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input name="l_sync_ul" id="l_sync_ul" type="checkbox">
但是为什么没有隐藏字段并在点击时禁用/启用它?或者更好:如果没有检查它将不会发送。如果您使用的是Ajax,请在服务器或Ajax中处理 -
答案 3 :(得分:0)
根据最新修改,我会替换$(this).next().remove(); with $('input[value=off]').remove();
,因此会删除value=off
的所有元素。它可能适用于某些情况,反之亦然。见这里:
脚本
$(':checkbox').change(function() {
if (!this.checked) {
$(this).after('<input type="hidden" name="' + $(this).attr("name") + '" value=off>')
} else {
$('input[value=off]').remove();
}
});
HTML 的
<input type="hidden" name="l_sync_ul" value=off>
<input type="checkbox" name="l_sync_ul" id="l_sync_ul" onclick="toggle_tip('ul_dept')">