如何将字段值合并到组中?

时间:2016-03-21 01:41:40

标签: javascript jquery

我有一个类似的HTML结构,除了我根据用户的需要动态添加一对字段(firstname和amp; surname)。

    <div class="wrapper">
    <input id="firstname" type="text" value="firstname">
    <input id="surname" type="text" value="surname">
    <input id="firstname2" type="text" value="firstname">
    <input id="surname2" type="text" value="surname">
    </div>

我可以将所有值转换为1个长字符串,并用

分隔逗号
var vals = $('input').map(function()
{
   return this.value;
}).get().join(',');

但是,我希望合并前两个字段,并在第二个字段值之后通过分隔符连接,例如firstname surname, firstname2 surname2并且因为我不知道哪些字段是在POST时创建的,所以我无法在我的选择器中指定它们,所以我需要看一下从包装器中抓取它们。

2 个答案:

答案 0 :(得分:2)

您可以这样做:

var vals = $('input').map(function()
{
   return this.id.substring(0,6) == 'surname'?this.value+'~':this.value;
}).get().join(',');

其中,单独的最后一个字段值将附加行分隔符。

注意:我已根据ID属性建立逻辑,但您可能希望使用哪个属性适合您的使用(如css类!)

答案 1 :(得分:1)

您应该能够分配应合并类似

的类的字段
<div class="wrapper">
<input class="firstclass" id="firstname" type="text" value="firstname">
<input class="firstclass" id="surname" type="text" value="surname">
<input class="secondclass" id="firstname2" type="text" value="firstname">
<input class="secondclass" id="surname2" type="text" value="surname">
</div>

您现在应该能够使用类名而不是元素类型input来选择要合并的字段,就像这样

var vals = $('.firstclass').map(function()
{
   return this.value;
}).get().join(',');

另外,重新构建你的html,以便每一对都在其自己的div中,就像这样;

<div class="wrapper">
   <div class="inputs">
      <input class="firstclass" id="firstname" type="text" value="firstname">
      <input class="firstclass" id="surname" type="text" value="surname">
   </div>
   <div class="inputs">
      <input class="firstclass" id="firstname" type="text" value="firstname">
      <input class="firstclass" id="surname" type="text" value="surname">
   </div>
</div>

然后,首先选择所有inputs作为这样的数组;

var inputs = $(".inputs');

并在输入上循环并加入字段,就像在第一个示例中所做的那样。

for (var i in inputs) { 
    var vals = $(i).find('input').map(function()
    {
        return this.value;
    }).get().join(',');
    ... do something with vals...
}