如何解析表单的输出?

时间:2014-03-03 21:08:22

标签: jquery forms request send

注意:除了附加JS文件之外,我无法编辑任何内容。

我有一个HTML表单,如下所示:

<input type="text" name="name" />
<input type="text" name="last_name" />
<input type="text" name="mail" />
<select name="country">
  <option value="1">Country 1</option>
  (...)
</select>

现在假设用户填写表单:

  

约翰| Doe | mail@example.com |选择第57个国家

问题是,我的后端以不同的形式接受数据(我不能改变它)。它需要看起来更像是为了工作:

   <input type="text" name="site[name]" value="John" />
   <input type="text" name="site[last_name]" value="Doe" />
   <input type="text" name="site[country]" value="57" />
   (...)

是否可以动态解析/修改表单的输出,以便我的后端接受我用它提供的内容?任何提示?我一直在寻找,但找不到任何东西:)非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用更改每个输入的名称属性

$(document).ready(function(){
    $("form input[name=name]").attr("name", "site[name]");
    $("form input[name=last_name]").attr("last_name", "site[last_name]");
    $("form select[name=country]").attr("name", "site[country]");
});

或一般解决方案

DEMO:http://jsfiddle.net/xbLH7/

$(document).ready(function(){
    $("form").children().each(function(){
        var currName = $(this).attr("name");
        if(currName != ""){
            $(this).attr("name", "site["+currName+"]");
        }
    });
});

答案 1 :(得分:0)

您可以使用以下内容重写所有name属性:

$(function() {
    $("input[name]").attr(function(i, oldname) {
        return 'site['+oldname+']';
    });
});