2010-09-07 33 views
2

下面的代码片段贯穿一堆表单元素,抓取名称和值并提醒它们。如果有3个输入,我会得到三个警报。我需要将这些全部结合起来,以便我可以通过.post提交它们,但不知道该怎么做。如何使用.each运行输入,然后合并结果?

我无法使用.serializeArray,因为我没有可以使用的窗体标签。后端是.net,并且页面上最多可以有20种不同的表单,所以我无法提交整件事情。

任何人都可以指向正确的方向吗?

$('.savefunctions a').live('click', function() { 
    var fields = $(this).parents('.ui-accordion-content').find(':input'); 
      $.each(fields, function(i, field) { 
     alert(field.name+': "'+field.value+'", '); 
    }); 
}); 

回答

3

你不需要<form>使用.serializeArray()

From the docs:

该方法可以已经选择单独的形式的元素jQuery对象上起作用,如<input><textarea>,和<select>

var result = $(this).parents('.ui-accordion-content') 
              .find(':input').serializeArray(); 
+0

感谢您的答复。从那里开始,我现在已经成功地将它作为json发布,并且全世界都很好。 :) – Trip 2010-09-07 20:07:33

0

使用对象:

$('.savefunctions a').live('click', function() { 
    var o = {}; 
    var fields = $(this).parents('.ui-accordion-content').find(':input'); 
    $.each(fields, function(i, field) { 
     o[field.name] = field.value; 
    }); 
    $.post('http://my.url/', o); 
}); 
0

试试这个:

$(fields).each(<do your processing here for each field>); 

注:里面的。每个(),在各字段重复使用关键字这一点。但是,如果你需要应用jQuery功能,然后做这样的事情:

$(this).click(); 
相关问题