Jquery 使用:输入时检查是否选中复选框/收音机

Jquery 使用:输入时检查是否选中复选框/收音机,jquery,Jquery,我想使用ajax发布HMTL表单的数据,以便它发布与我正常提交的数据相同的数据 在HTML5之前,我会这样做: $(“输入[type='radio']:选中,输入[type='checkbox']:选中,文本区域,输入[type='text']) 因此,我一直在使用$('form:input'),因此它对于所有不同的类型=电子邮件/搜索/等等来说都是未来的证明 问题是,即使未选中复选框/收音机,它仍会发送其值。最好的办法是什么 代码: 您是否尝试过: $('#button').on('click

我想使用ajax发布HMTL表单的数据,以便它发布与我正常提交的数据相同的数据

在HTML5之前,我会这样做:
$(“输入[type='radio']:选中,输入[type='checkbox']:选中,文本区域,输入[type='text'])

因此,我一直在使用
$('form:input')
,因此它对于所有不同的类型=电子邮件/搜索/等等来说都是未来的证明

问题是,即使未选中复选框/收音机,它仍会发送其值。最好的办法是什么

代码:

您是否尝试过:

$('#button').on('click', function(){
$.ajax({
    url: 'myurl.com',
    type: 'post',
    data: $('form').serialize(),
    dataType: 'json',
    success: function() {
        alert('success');
    },
    error: function(xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    }
});
}))


正如蒂亚戈·赖斯的回答,您可以序列化表单。如果您想采用更灵活的方式,那么可以像下面这样遍历每个表单元素。这是不完整的代码段,所以请尝试理解

    function getFormData()
    {
        var retObjectc = {};
        $("#myform").find( 'input[type=text],input[type=time], input[type=hidden],input[type=checkbox],input[type=radio], textarea, select' )
        .each( function (key,value)
        {
            if( $(value).prop("tagName") == "INPUT" )
            {
                if( $(value).prop("type") == "checkbox" )
                {
                    retObjectc[$(value).prop("name")] = $(value).is(":checked");
                }
                else
                {
                    retObjectc[$(value).prop("name")] = $(value).val();
                }
            }
            else if( $(value).prop("tagName") == "SELECT" )
            {
                retObjectc[$(value).prop("name")] = $(value).val();
            }
        });

        return JSON.stringify(retObjectc);
    }

您是否尝试过使用
.prop()
?您想在发送前检查复选框是否选中以及输入是否为空,对吗?我只想让它发布与我正常提交表单相同的数据。输入将发布空数据,复选框仅在选中时发布。您可以发布您的代码吗?刚刚测试过,如果您选择完整表单,它工作正常。虽然我需要使用@Satpal方法来过滤选择
    function getFormData()
    {
        var retObjectc = {};
        $("#myform").find( 'input[type=text],input[type=time], input[type=hidden],input[type=checkbox],input[type=radio], textarea, select' )
        .each( function (key,value)
        {
            if( $(value).prop("tagName") == "INPUT" )
            {
                if( $(value).prop("type") == "checkbox" )
                {
                    retObjectc[$(value).prop("name")] = $(value).is(":checked");
                }
                else
                {
                    retObjectc[$(value).prop("name")] = $(value).val();
                }
            }
            else if( $(value).prop("tagName") == "SELECT" )
            {
                retObjectc[$(value).prop("name")] = $(value).val();
            }
        });

        return JSON.stringify(retObjectc);
    }