如何在jQuery中拍摄<form>的快照?</form>

时间:2010-01-07 05:06:15

标签: jquery forms

<input />中有多个<textarea><form>,但没有他们的ID或名称。

是否可以拍摄<form>内的所有内容并在需要时进行渲染?

3 个答案:

答案 0 :(得分:3)

我不确定为什么你会有一堆缺少名字和id的输入,但是你可以循环并为每个输入生成一个名称/ id,然后使用$ .serialize()序列化它们。

// Give all a name (e0, e1, e2...)
$(":input").each(function(i){
  $(this).attr("name", "e"+i);
});

// Serialize the data
var data = $("#formid").serialize(); // ex: e0=zip&e1=foo&e2=bar

答案 1 :(得分:1)

var formdata = $("#formid").serialize();

答案 2 :(得分:0)

已更新此答案适用于复选框,单选按钮,输入和textareas。如果您想要选择支持,只需添加一个额外的测试/类型和并行设置器。

存储值:

var values = $.map($("form :input"), function(n, i){ 
    if(n.is(':checkbox, :radio'))
      return [n.is(':checked'), "check"];
    else
      return [n.val() , "val"];
};

恢复值:

$("form :input").each(function(i, el){
   var val = values[i];
   if(val[1] == "check"){
       if(val[0] == true) $(this).attr('checked', 'checked');
       else $(this).removeAttr('checked');
   } else {
       $(this).val(val[1]);
   }
});

这两次都假定相同的顺序。(不敢说)不可能存储没有keys的值,然后以不同的顺序恢复它们,仍然具有与正确字段匹配的值。您需要nameid来区分..期间。