我有一个包含多个复选框的表单。我还有以下代码来返回这些复选框的状态。
A)返回“未定义”
B)无论是否检查,都返回“开”
C,D)如果我只检查C然后它也将D设置为“true”。我只希望C为“真”。
$('#button').click(
function() {
var A = $('#id_a').attr('checked');
var B = $('#id_b').val();
var C = $('#id_c').is(':checked');
var D = $('#id_d').is(':checked');
$.ajax({
url: "test.php",
type: "GET",
data: "&A="+A+"&B="+B+"&C="+C+"&D="+D,
success: function(data) {
$('#display').html(data);
}
});
}
);
提前致谢
答案 0 :(得分:1)
jQuery的 .prop()
方法将返回"checked"
的布尔值。
这是.prop()
优于.attr()
的好处,.prop()
返回适合输入的值类型,而.attr()
返回通过HTML存储的内容。
.prop()
已添加到1.6中的jQuery。
答案 1 :(得分:0)
试试这个:
var A = $('#id_a').prop('checked');
var B = $('#id_b').prop('checked');
var C = $('#id_c').prop('checked');
var D = $('#id_d').prop('checked');
请参阅http://api.jquery.com/prop/并查看“属性与属性”部分。它实际上是在讨论“已检查”的财产。
答案 2 :(得分:0)
如果我只检查C,那么它也将D设置为“true”。我只想要C “真”。
.is(':checked')
总是返回一个布尔值,如果你遇到问题,那么问题出在其他地方。
$('#button').on('click', function() {
var data = {};
$.each(['a','b','c','d'], function(_,el) {
data[el.toUpperCase()] = $('#id_'+el).is(':checked');
});
$.ajax({
url : "test.php",
data: data
}).done(function(result) {
$('#display').html(result);
});
});