获取所有表单元素和不规则字符

时间:2013-11-19 21:45:49

标签: php jquery forms

我有一个可以包含任意数量元素的表单。每个元素都有一些特征。如何将所有表单的数据放入ajax发布的URL?

变量id是给定项的id。

 Item 1
  <input type='text' name='<?php echo $id . "['name']";?>' id='i_<?php echo $id . "['name']";?>'>
  <input type='text'  name='<?php echo $id . "['size']";?>' id='i_<?php echo $id . "['size']";?>'>

 Item 2
  <input type='text' name='<?php echo $id . "['name']";?>' id='i_<?php echo $id . "['name']";?>'>
  <input type='text'  name='<?php echo $id . "['size']";?>' id='i_<?php echo $id . "['size']";?>'>

 Item 3
  <input type='text' name='<?php echo $id . "['name']";?>' id='i_<?php echo $id . "['name']";?>'>
  <input type='text'  name='<?php echo $id . "['size']";?>' id='i_<?php echo $id . "['size']";?>'>

如果我这样做

 var inputs = $('#formName :input');
 var data = "";
 inputs.each(function() {
    data += this.name+"="+$(this).val()+"&";
});

标识符中的括号将所有内容全部弄清楚。我知道我正在做错了。我该怎么办?

如果我序列化同样的事情发生。我知道在元素id中使用括号是不理想的,但我怎么能将每个项目的一些特征与id相关联呢?

这是我的渲染形式:

 <form name='formName' id='formName' action='#'>
 <ul id="sortable">

<li class="ui-state-default" id='201817'>
        <input type='button' class='removeItem' value='remove'>
        <input type='text' name='201817['name']' id='a_201817['name']' value='hat'>
        <input type='text' name='201817['size']' id='a_201817['size']' value='small'>
</li>
<li class="ui-state-default" id='501817'>
        <input type='button' class='removeItem' value='remove'>
        <input type='text' name='501817['name']' id='a_501817['name']' value='shirt'>
        <input type='text' name='501817['size']' id='a_501817['size']' value='small'>
</li>
<li class="ui-state-default" id='522227'>
        <input type='button' class='removeItem' value='remove'>
        <input type='text' name='522227['name']' id='a_522227['name']' value='shirtB'>
        <input type='text' name='522227['size']' id='a_522227['size']' value='Large'>
</li>
 </ul>
 </form>

1 个答案:

答案 0 :(得分:4)

您可以使用form.serialize它会考虑所有:input字段。另请记住,序列化将考虑元素name而不是id

所以试试:

var data = $('#formName').serialize();