将所有值一次性发送到服务器

时间:2014-07-11 00:54:32

标签: javascript jquery html

我有一个表单,一堆输入和提交按钮。一些输入是动态添加和删除的。其中一些可能(或可能没有)被禁用,但我仍然需要获取服务器的值。

  1. 所以我必须为按钮添加一个处理程序,并手动收集已禁用输入的值,并将它们添加到其他启用状态。投入。但是我不喜欢那样,因为它似乎太复杂了(因为有些输入被动态添加/删除)。

  2. 我还可以为每个可以禁用的输入添加隐藏输入,但仍然有点复杂。

  3. 我想要的是1。但是,我不希望手动枚举jquery 选择器启用的输入,而是想让所有值一次性被发送到服务器 jquery函数可能或通过任何其他方式。 然后手动(通过选择器)将禁用输入中的值相加。这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用jQuery .serialize()

函数的一般结构看起来像这样

var mydata = $("#myform").serialize();
$.ajax({
    type: "POST",
    url: "ajaxurl",
    data: mydata,
    dataType: "json",
    success: function(data) {
        ...
    }
});

所以我只是觉得你有一个如何获得禁用字段的问题。您可以使用此主题中建议的功能:

Disabled fields not picked up by serializeArray

为了完成答案,我将从那里复制插件。

用法如下:

var data = $('form').serializeAllArray();

这是插件本身:

(function ($) {
  $.fn.serializeAllArray = function () {
    var obj = {};

    $('input',this).each(function () { 
        obj[this.name] = $(this).val(); 
    });
    return $.param(obj);
  }
})(jQuery);

答案 1 :(得分:0)

您可以在提交处理程序中使用以下策略:

  1. 选择所有已禁用的元素..(不要丢失对这些元素的引用)
  2. 启用所有已停用的元素
  3. 序列化表单..以获取所有数据
  4. 禁用元素
  5. 提交表格。