Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-repearchave serialize()_Javascript_Jquery_Forms_Serialization - Fatal编程技术网

Javascript jQuery-repearchave serialize()

Javascript jQuery-repearchave serialize(),javascript,jquery,forms,serialization,Javascript,Jquery,Forms,Serialization,我有多个div元素,每个元素都有一组表单字段(文本输入和选择) 这些字段不是name属性,而是具有与“name”应该具有的值相同的rel属性 如何重现jQuery序列化的行为(http://api.jquery.com/serialize/)在这些领域 HTML如下所示: <div> <input type="text" rel="title" value="bla" /> <input type="text" rel="count" value="5" /

我有多个div元素,每个元素都有一组表单字段(文本输入和选择)

这些字段不是
name
属性,而是具有与“name”应该具有的值相同的
rel
属性

如何重现jQuery序列化的行为(http://api.jquery.com/serialize/)在这些领域

HTML如下所示:

<div>
  <input type="text" rel="title" value="bla" />
  <input type="text" rel="count" value="5" />
  <select rel="page">
    <option value="home">home</option>
    <option value="about" selected="selected">about</option>
    <option value="404">404</option>
  </select>
  <input type="hidden" name="serialize_above_fields[]" value="" />
</div>

<div>
  <input type="text" rel="title" value="bla" />
  <input type="text" rel="count" value="5" />
  <select rel="page">
    <option value="home">home</option>
    <option value="about" selected="selected">about</option>
    <option value="404">404</option>
  </select>
  <input type="hidden" name="serialize_above_fields[]" value="" />
</div>

...
$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.rel]) {
            if (!o[this.rel].push) {
                o[this.rel] = [o[this.rel]];
            }
            o[this.rel].push(this.value || '');
        } else {
            o[this.rel] = this.value || '';
        }
    });
    return o;
};

家
关于
404
家
关于
404
...
基本上,我希望生成一个隐藏的输入字段,其中包含它所驻留的div中的所有字段值(并使用rel作为键),如:


如果您的输入元素都在一个
中,您可以尝试使用如下方式序列化表单:

<div>
  <input type="text" rel="title" value="bla" />
  <input type="text" rel="count" value="5" />
  <select rel="page">
    <option value="home">home</option>
    <option value="about" selected="selected">about</option>
    <option value="404">404</option>
  </select>
  <input type="hidden" name="serialize_above_fields[]" value="" />
</div>

<div>
  <input type="text" rel="title" value="bla" />
  <input type="text" rel="count" value="5" />
  <select rel="page">
    <option value="home">home</option>
    <option value="about" selected="selected">about</option>
    <option value="404">404</option>
  </select>
  <input type="hidden" name="serialize_above_fields[]" value="" />
</div>

...
$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.rel]) {
            if (!o[this.rel].push) {
                o[this.rel] = [o[this.rel]];
            }
            o[this.rel].push(this.value || '');
        } else {
            o[this.rel] = this.value || '';
        }
    });
    return o;
};

如果您的输入元素都在
中,您可以尝试使用以下方式序列化表单:

<div>
  <input type="text" rel="title" value="bla" />
  <input type="text" rel="count" value="5" />
  <select rel="page">
    <option value="home">home</option>
    <option value="about" selected="selected">about</option>
    <option value="404">404</option>
  </select>
  <input type="hidden" name="serialize_above_fields[]" value="" />
</div>

<div>
  <input type="text" rel="title" value="bla" />
  <input type="text" rel="count" value="5" />
  <select rel="page">
    <option value="home">home</option>
    <option value="about" selected="selected">about</option>
    <option value="404">404</option>
  </select>
  <input type="hidden" name="serialize_above_fields[]" value="" />
</div>

...
$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.rel]) {
            if (!o[this.rel].push) {
                o[this.rel] = [o[this.rel]];
            }
            o[this.rel].push(this.value || '');
        } else {
            o[this.rel] = this.value || '';
        }
    });
    return o;
};

您可以使用jQuery的
map
实用程序轻松地完成这项工作

$('div').each(function() {
  var serializedData = $(this).find(':text, select').map(function(i, el) {
    return $(el).attr('rel') + '=' + $(el).val();
  }).get();

  $(this).find('input[type=hidden]').val(serializedData.join('&'));
});

您可以使用jQuery的
map
实用程序轻松地完成这项工作

$('div').each(function() {
  var serializedData = $(this).find(':text, select').map(function(i, el) {
    return $(el).attr('rel') + '=' + $(el).val();
  }).get();

  $(this).find('input[type=hidden]').val(serializedData.join('&'));
});

给他们一个
名称
属性是一个选项吗?如果添加一个名称,我不会在$\u-get中得到他们,是:)给他们一个
名称
属性是一个选项吗?如果添加一个名称,我不会在$\u-get中得到他们,是:)但我不能将他们包装在
表单中
,因为我已经有了一个包含上述所有HTMLEN的表单,那么可以把它们放在一个div中,然后序列化这个div吗?不是100%确定它会工作-但这是我在jQuery之前用来序列化的。但是我不能将它们包装在
表单中,因为我已经有一个表单包含了上面所有的HTML,然后可能将它们放在一个div中,然后序列化div?不是100%确定它会工作-但这是我在jQuery之前用来序列化的。