jquery ajax - 多个复选框状态问题

时间:2013-08-01 21:20:29

标签: jquery ajax

我有一个包含多个复选框的表单。我还有以下代码来返回这些复选框的状态。

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);   
            }
         });
}

);

提前致谢

3 个答案:

答案 0 :(得分:1)

jQuery的 .prop() 方法将返回"checked"的布尔值。

这是.prop()优于.attr()的好处,.prop()返回适合输入的值类型,而.attr()返回通过HTML存储的内容。

.prop()已添加到1.6中的jQuery。

答案 1 :(得分:0)

试试这个:

http://jsfiddle.net/49XDM/1/

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);
    });
});

FIDDLE