带有两个按钮的表单以不同的值提交
Posted
技术标签:
【中文标题】带有两个按钮的表单以不同的值提交【英文标题】:Form with two button submit with different value 【发布时间】:2012-02-21 16:27:39 【问题描述】:<form action="here.php" method="POST">
<input type="text" name="text">
<div id="one">
<input type="hidden" name="aaa" value="one">
<input type="submit" value="Send">
</div>
<div id="two">
<input type="hidden" name="aaa" value="two">
<input type="submit" value="Send">
</div>
</form>
现在如果我点击发送 div ONE 或 div 2 我总是在 $_POST['aaa'] = 'two';
是否可以用两个不同的值提交一个表单?
如果我点击 div 一个提交,我希望收到 $_POST['aaa'] = 'one',如果我点击 div 两个提交,我希望收到 $_POST[ 'aaa'] = '两个'.
我该怎么做?
我可以用这个 PHP 和 jQuery。
编辑:
我不想创建两个表单 - 我不想多次显示两个 <input type="text" name="text">
编辑:也许我可以改为按钮提交?但是怎么做?
【问题讨论】:
【参考方案1】:看来你真正想做的是在每个按钮中都有一个值,见this,例如:
<form action="demo_form.asp" method="get">
Choose your favorite subject:
<button name="subject" type="submit" value="fav_html">HTML</button>
<button name="subject" type="submit" value="fav_CSS">CSS</button>
</form>
【讨论】:
通常建议在此处包含答案,而不仅仅是一个链接,以防链接不再有效(就像我现在一样)。【参考方案2】:你需要两种不同的形式:
<div id="one">
<form ...>
<input type="hidden" name="aaa" value="one">
<input type="submit" value="Send">
</form>
</div>
<div id="two">
<form ...>
<input ...>
<input ...>
</form>
</div>
标准做法是,当两个字段具有完全相同的name
时,仅使用表单中遇到的 LAST 值并提交。
PHP 确实有一个特殊的表示法 (name="aaa[]"
) 允许提交多个具有相同名称的值,但这在这里对您没有帮助,因为它会提交所有 aaa
值,而不仅仅是最靠近提交按钮的那个。
HTML 表单:
<form ...>
<input type="text" name="textfield">
<div id="one">
<input type="hidden" name="one_data" value="aaa" />
<input type="submit" name="submit_one" value="Submit" />
</div>
<div id="two">
<input type="hidden" name="two_data" value="bbb" />
<input type="submit" name="submit_two" value="Submit" />
</div>
</form>
服务器端:
if (isset($_POST['submit_two']))
$data = $_POST['two_data'];
else if (isset($_POST['submit_one']))
$data = $_POST['one_data'];
else
die("Invalid submission");
【讨论】:
这没关系,但我不想在我的页面上显示两次 在提交时,您总是可以使用一些 javascript 将一个输入字段的值复制到两个表单中的另一个隐藏字段中。但是由于您的表单现在是结构化的,所以没有办法解决这个问题。您还可以使用其他技巧,例如为每个字段指定唯一名称,并使用该事实来检测单击了哪个提交按钮,然后仅访问适当的值。 感谢编辑 (+1),但是如果这个提交按钮是例如 20 怎么办?我必须单独检查一下吗? 您的意思是 20 个不同的提交按钮?哎呀,是的,你必须检查每一个。【参考方案3】:您可以显示一个带有两个选项和一个提交按钮的单选列表,而不是显示两个提交按钮。
【讨论】:
【参考方案4】:试试这个:
在html中-
<input id="PreviousButton" value="Previous" type="submit" />
<input id="NextButton" value="Next" type="submit" />
<input id="Button" name="btnSubmit" type="hidden" />
在欢乐中-
$("#PreviousButton").click(function ()
$("#Button").val("Previous");
);
$("#NextButton").click(function ()
$("#Button").val("Next");
);
然后您可以在表单结果中看到“按钮”包含的内容。
【讨论】:
以上是关于带有两个按钮的表单以不同的值提交的主要内容,如果未能解决你的问题,请参考以下文章
带有两个提交按钮的 Django 表单。 . .一个需要字段,一个不需要
jQuery Validation - 一个 asp.net 表单上的多个提交按钮,不同的验证组?