在javascript/jquery中迭代表单元素

iterate through form elements in javascript/jquery

本文关键字:迭代 表单 元素 jquery javascript      更新时间:2023-09-26

我试图迭代所有表单元素的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()获取值

另外,您混合了XMLStringstring,这导致您的代码创建一个全局变量,并在第二次调用时失败。

使用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()