热门的是用jQuery将html输入属性映射到对象
Hot to map html input properties to object with jQuery?
我想读取所有页面输入id和值到对象中,并将其传递给函数,该函数循环遍历它们并提取id和值。
我从开始
function send()
{
var data = [];
var inputs = $(":text");
for (var i = 0, l = inputs.length; i < l; i++) {
var input;
input.id = inputs[i].attr("id");
input.text = inputs[i].val();
data[i] = input;
}
receive(data);
}
function receive(data)
{
for (var input in data) {
alert(input.id);
alert(input.text);
}
}
为什么这不起作用?
如果给input
元素一个name
属性,就可以这样做。。。
var data = $(":text").serializeArray();
这导致了这个数据结构(取自文档)。。。
[
{
name: "a",
value: "1"
},
{
name: "b",
value: "2"
},
{
name: "c",
value: "3"
},
{
name: "d",
value: "4"
},
{
name: "e",
value: "5"
}
]
要向数组中添加项,您可能希望使用.push()
,而不是通过数字索引访问它。此外,jQuery提供了一个.each
来迭代一个集合。
var data = [];
$(':input:not(:button)').each(function() {
data.push({
id: this.id,
text: $(this).val()
});
});
还有一件事。jQuery包含一个.map
函数,它返回一个在给定集合上"映射"的数组,这可以将上面的代码缩短为…
var data = $(':input:not(:button)').map(function() {
return { id: this.id, text: $(this).val() };
});
使用jquery的serializeArray函数
HTML:
<form id="test">
<input type="hidden" name="a1" value="test" />
<input type="text" name="a2" value="test2" />
<input type="text" name="a3" value="test2" />
<input type="text" name="a4" value="test2" />
</form>
JS:
function getData(){
var data = $("#test").serializeArray();
for(var i in data){
alert(data[i].name+":"+data[i].value);
}
}
jsFiddle示例:http://jsfiddle.net/k2Dd4/
我不确定jQuery中的确切实现,但在Javascript中,我会将其作为来实现
var inputs = document.getElementsByTagName("input");
var textelems;
for (var i=0;i<inputs.length;i++) {
if (inputs[i].type == "text") {
tempElem = [];
tempElem['id'] = inputs[i].id;
tempElem['value'] = inputs[i].value;
textelems.push(tempElem);
}
}
这将为您提供一个2D数组(tempElems),其中每个索引都是一个文本框,具有自己的索引id和value。
正确的代码如下所示:
function send()
{
var data = [];
var inputs = $(":text");
for (var i = 0, l = inputs.length; i < l; i++) {
var input = {};
input.id = $("#" + inputs[i].id).attr("id");
input.text = $("#" + inputs[i].id).val();
data[i] = input;
}
receive(data);
}
function receive(data)
{
for (var i = 0, l = data.length; i < l; i++) {
alert(data[i].id);
alert(data[i].text);
}
}
相关文章:
- 选中单选框时将属性添加到输入字段
- 如何选择多个输入字段并删除所需的属性
- Html5输入属性的默认值,如最小值、最大值、大小等
- 将输入值设置为ng模型属性[Angular]时出现问题
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- <输入id=“;“到期”;type=“;月份;min=“;2016-05”>如何填写“;min”;属性与当前
- JS事件未更改输入禁用属性
- 如何动态更新输入值属性
- 如何将按钮的数据属性设置为输入[type=text]中设置的任何值
- 使用jQuery更改输入字段的自定义属性
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 更改类所选空输入的CSS属性
- 更改 html 输入字段中的占位符属性
- 至于所有输入的标签都用指定的属性来设置,例如属性检查=false
- 为什么除了html5输入模式属性之外,这个简单的regex在任何地方都能工作
- 显示范围输入的值"无法读取属性'值'“为空”;
- jQuery:检查hasClass的name属性输入
- 文本属性输入框,用于选择字体
- RegExp构造函数属性输入
- 属性输入值为另一个输入值