【发布时间】:2011-05-31 08:54:00
【问题描述】:
我有一个 Web 应用程序,主要由一个带有信息的大表单组成。表单被分成多个选项卡,以使其对用户更具可读性:
<form>
<div id="tabs">
<ul>
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
</ul>
<div id="tab1">A big table with a lot of input rows</div>
<div id="tab2">A big table with a lot of input rows</div>
</div>
</form>
表单是动态扩展的(额外的行被添加到表中)。 表单每 10 秒序列化一次并与服务器同步。
我现在想在其中一个选项卡上添加一个交互式表单:当用户在字段中输入名称时,此信息将发送到服务器并返回与该名称关联的 id。此 id 用作一些动态添加的表单字段的标识符。
这样一个页面的快速草图如下所示:
<form action="bigform.php">
<div id="tabs">
<ul>
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
</ul>
<div id="tab1">A big table with a lot of input rows</div>
<div id="tab2">
<div class="associatedinfo">
<p>Information for Joe</p>
<ul>
<li><input name="associated[26][]" /></li>
<li><input name="associated[26][]" /></li>
</ul>
</div>
<div class="associatedinfo">
<p>Information for Jill</p>
<ul>
<li><input name="associated[12][]" /></li>
<li><input name="associated[12][]" /></li>
</ul>
</div>
<div id="newperson">
<form action="newform.php">
<p>Add another person:</p>
<input name="extra" /><input type="submit" value="Add" />
</form>
</div>
</div>
</div>
</form>
上述方法不起作用:HTML 中不允许嵌套表单。但是,我确实需要在该选项卡上显示表单:它是该页面功能的一部分。我还想要一个单独表单的行为:当用户在表单字段中点击返回时,按下“添加”提交按钮并在部分表单上触发提交操作。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
使用带有多个按钮的大表单。每个按钮都可以有不同的值,这就是您的后端代码如何判断实际按下哪个按钮来提交表单的方式。然后,您的后端代码可以根据按下的按钮执行不同的操作。或者你甚至可以让“子表单”上的按钮调用AJAX而不是提交表单,这样你就可以在不刷新页面的情况下查询服务器并获得响应。然后,您可以使用 javascript 来使用 AJAX 查询响应来创建额外的表单字段。
标签: php jquery forms jquery-ui-tabs