仅从指定的字段集中提取数据
Pull data only from specified fieldsets
我在一个表单中有多个字段集,这些字段集有单独的input/select元素和下面的JS/jQuery来处理保存时的元素。
var form = {};
$('fieldset').each(function() {
var fieldsetId = this.id; var fieldset = {};
$('#'+fieldsetId+' input:checkbox, #'+fieldsetId+' input:radio').each(function() {
name = $(this).attr('name');
fieldset[name] = $(this).val();
});
$('#'+fieldsetId+' select').each(function() {
...
}
form[fieldsetId] = fieldset;
});
正在读取数据。问题出在多个字段集上。每个连续的字段集都覆盖最后一个,并使用所有以前的输入值。
目前,返回的处理数据看起来像:
first-fieldset (object)
key:2
textbox:"value"
select:"value"
second-fieldset (object)
key:2
textbox:"value"
select:"value"
应该在哪里:
first-fieldset (object)
key:1
textbox:"value"
second-fieldset (object)
key:2
select:"value"
我非常怀疑这是选择字段集元素的方式,但我尝试过的所有内容要么都是相同的格式,要么根本没有数据。
在http://jsfiddle.net/gaby/jdR3V/1/
但是,如果将var fieldset = {};
置于.each()
调用之外,则会失败,正如您所描述的那样。
此外,您还可以对可读性和性能进行一些改进
(对于可直接访问的属性不使用$()
,还使用fieldset
元素缓存对jquery对象的引用,并使用它来查找输入元素,而不是多个动态选择器)
var form = {};
$('fieldset').each(function() {
var self = $(this),
fieldset = {};
self.find('input:checkbox, input:radio').each(function() {
fieldset[this.name] = this.value;
});
self.find('select').each(function() {
...
}
form[this.id] = fieldset;
});
相关文章:
- 在jstree中,如何将指定的节点集中到大型树上
- 在数据提取完成之前进行页面渲染
- 如何在Javascript中从字符串中提取某些单词
- Don'不允许将焦点集中在自动完成的选择上
- RegEx JavaScript:数字后的符号提取
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- Regex提取URL返回数组的一部分;未定义”;
- 如何提取“;href"最近列表项中的属性值
- 使用时刻.js从日期时间中提取时间
- 通过javascript从会话中提取用户名
- HTML页面如何提取通过表单传递的参数
- 是否可以自动拉取“随机”;标签“;从一长串文本中提取
- innerHTML的子字符串可以在初始调用时提取吗
- 如何使用phonegap从安卓设备中提取联系人的字母顺序
- 如何从特定页面中提取php变量值
- 从字符串中提取年份的Javascript正则表达式
- 如何使用JavaScript提取此url的一部分
- 如何从合并的结果集中提取数组
- 仅从指定的字段集中提取数据
- 如何从JSON格式的数据集中提取DataTable