Javascript jQuery-repearchave serialize()
我有多个div元素,每个元素都有一组表单字段(文本输入和选择) 这些字段不是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" /
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之前用来序列化的。