2012-08-15 51 views
-1

我有这个必须一次提交的大表单。一个长页面不是一个选项,所以我决定分开嵌套列表中的部分。这里是标记的样子:jQuery Mobile - 嵌套列表中的字段不被引用

<form action="/home/index" data-ajax="false" data-transition="pop" id="xmlForm" method="post"> 

    <ul data-role="listview" data-inset="true"> 

     <li> 
      Section 1 
      <ul data-inset="true"> 
       <li data-role="fieldcontain"> 
        <label for="field1">Field1</label> 
        <input type="text" id="field1" /> 
       </li> 
       <li data-role="fieldcontain"> 
        <label for="field2">Field2</label> 
        <input type="text" id="field2" /> 
       </li> 
      </ul> 
     </li> 

     <li> 
      Section 2 
      <ul data-inset="true"> 
       <li data-role="fieldcontain"> 
        <label for="field4">Field4</label> 
        <input type="text" id="field4" /> 
       </li> 
       <li data-role="fieldcontain"> 
        <label for="field5">Field5</label> 
        <input type="text" id="field5" /> 
       </li> 
      </ul> 
     </li> 

    </ul> 

    <div class="ui-body ui-body-b"> 
     <fieldset> 
      <button type="submit" data-theme="a" name="submit" value="submit-value">Process Script</button> 
     </fieldset> 
    </div> 

</form> 

但是,一旦我点击提交的“提交”按钮的唯一值是:

submit:submit-value 

的形式被忽略所有其他领域。 它是由设计还是我错过了什么?

回答

0

您的输入元素应具有name属性(即<input type="text" id="field1" name="field1" />)。

+0

他们实际上是这样做的,当我输入上面的代码时,我错过了它。这里是实际代码的一部分: 顺便说一句,我是使用ASP.NET MVC 4. – CodeMaster2008 2012-08-15 05:18:30

0

我有同样的问题。如果您查看DOM,JQuery会将每个子列表重新排列到其自己的页面中。这导致所有表单字段被移出<form></form>标记之外。这就是为什么他们不包括在提交。

我将'表单'属性:<input type="text" id="field2" form="xmlForm"/>添加到所有表单字段。现在,当我提交子列表中的所有字段都包含在内。

+0

文档建议我们应该避免嵌套列表,以便最终创建多个页面,每个页面上都有一个窗体。但是你想出了一个有趣的方法。我会尝试后者。 – CodeMaster2008 2012-08-31 15:21:56