在javascript/jquery中迭代表单元素
iterate through form elements in javascript/jquery
我试图迭代所有表单元素的id,以指定的前缀开始,并创建一个xml字符串的结果,但它变得有点复杂的形式表单输入类型似乎有不同的行为。这个功能已经javascript, jQuery或第三方jQuery模块?
function fnPreIterate(){
var XMLstring;
$(':input[id*="f1"]').each(function() {
XMLstring += (" <" +this.name+ '>' + this.value + "</" + this.name + "> " );
});
$('#XMLstring').html("<pre>" + fnEncodeEntities(string) + "</pre>");
};
如果使用:
$(this).val()
代替
this.value
你可以省去很多表单元素差异带来的麻烦。
另一种迭代方法是使用.serializeArray()
:
$.each($('#form').serializeArray(), function() {
string += (" <" +this.name+ '>' + this.value + "</" + this.name + "> " );
});
希望这对你有帮助。欢呼声
PS:要按前缀选择,您应该使用$(':input[id^="f1"]')
(使用^而不是*)
使用$(this).val()
获取值
另外,您混合了XMLString
和string
,这导致您的代码创建一个全局变量,并在第二次调用时失败。
使用jQuery你应该尝试:
function fnPreIterate(){
var XMLstring='';
$(':input[id^="f1"]').each(function() {
var e = $(this), name=e.attr('name'), val=e.val();
XMLstring += (" <" +name+ '>' + val + "</" + name + "> " );
});
$('#XMLstring').html("<pre>" + fnEncodeEntities(XMLstring) + "</pre>");
};
我想它应该能行
你可以使用jQuery的serializeArray
你面临的问题是什么?尝试在函数中使用$(this)选择器。像这样$(this).attr('name')和$(this).val()
相关文章:
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Javascript表排序工作得很好,但对所有索引进行迭代会得到不同的结果
- 使用 JQuery 迭代到除第一列之外的表
- jQuery 改进表迭代器
- JQuery 添加表单元素迭代 ID
- 每次单击一次迭代两个数组并制作动画
- 本地存储迭代获取 for 循环内单击的按钮的值
- 不读取 while 循环中表单元素第一次迭代 ASP.NET
- 在 ractive.js 中使用具有 2 向绑定和迭代的单选按钮
- 每次单击按钮都要对字符串中的每个字母进行迭代
- Angular JS ng表错误TypeError:newParams重载不是一个函数,并且达到了10次摘要迭代,ABo
- 在多个parse.com类(表)上进行迭代并提取查询
- 如何将模板中的动态表传递到视图中,以迭代方式将它们保存到数据库中
- 如何迭代具有特定img alt属性的表行并删除javascript中的单元格
- 如何在30次迭代后创建一个新的表行
- 传递迭代变量以单击循环内部的事件
- 聚合物铁表迭代,但不打印
- 在每次循环迭代中单击不同的按钮
- 迭代并更改表单中的值
- Javascript中的表单元素迭代