JQuery获取单选按钮选择

时间:2015-01-29 02:55:47

标签: javascript php jquery html ajax

我正在尝试使用JQuery和Ajax提交一组表单。表单的元素输入或名称并不总是相同。

除了获取选中单选按钮的值之外,代码适用于我所拥有的内容。它总是返回最后一个单选按钮的值。

以下是我获取表单数据的方法:

var values = {};
var formdata = new FormData();
$('form :input').each(function()
{
    formdata.append(this.name, $(this).val());
});

我也尝试过:

$('form.ajax :input, form.ajax input[type=radio]:checked').each(function()

获取已检查单选按钮值的正确方法是什么?我希望不必为我提交的每个表单编写单独的函数。

4 个答案:

答案 0 :(得分:2)

首先,您可以选择复选框和收音机以外的所有输入元素,然后附加所选复选框和无线电元素的值

var values = {};
var formdata = new FormData();
$('form').find(':input:not(:checkbox, :radio)').each(function () {
    formdata.append(this.name, $(this).val());
});

$('form').find(':checkbox:checked, :radio:checked').each(function () {
    formdata.append(this.name, $(this).val());
});

为什么不尝试以下操作而不是手动创建表单数据

var formdata = new FormData($('form')[0]);

答案 1 :(得分:0)

您的代码正在遍历所有输入(包括单选按钮)并将其名称 - 值对添加到表单数据中。问题是如果你有多个单选按钮,你只会看到最后一个名称 - 值对,因为所有的单选按钮都有相同的名称。

为了正确处理单选按钮,您需要检查是否this.checked == true,这意味着这个特定的单选按钮是选中的:

$('form :input').each(function()
{
    if (this.type == 'radio' && !this.checked)
    {
        // this is a radio button, but it's not checked, so skip it
        return;
    }
    formdata.append(this.name, $(this).val());
});

答案 2 :(得分:0)

要获取页面上每个选中的单选按钮的值,只需循环遍历它们,仅过滤选中的无线电输入并在每次出现时运行您想要的任何代码。

var formData = new FormData();

$('input[type=radio]').filter(':checked').each(function () {
    var inputField = $(this);
    formData.append(inputField.attr('name'), inputField.val());
});

答案 3 :(得分:-1)

在通过Ajax发送之前,您需要序列化所选单选按钮的列表。

var radioChecked = $(":radio").serialize();
$.ajax(
        {
             url: _action_url,
             data: radioChecked,
             success: function(result){
                 // What do we do when success
             }
        }
        );