html - input必须输入 - input提交




两种提交按钮的形式 (12)

RoBorg是对的,但要小心一些东西 - 至少IE6和Firefox3在按Enter键提交而不是点击提交按钮时会有不同的表现。 FF3似乎发送第一个提交输入的名称/值对以及表单的其余部分,而IE6不发送任何提交输入。

我在表单中有两个提交按钮。 我如何确定哪一个被命中serverside?


也许这里提出的解决方案在2009年工作,但我测试了所有这些upvoted答案,没有人在任何浏览器工作。

只有我发现工作的解决方案是这样的:(但它使我觉得有点难看)

<form method="post" name="form">
<input type="submit" value="dosomething" onclick="javascript: form.action='actionurl1';"/>
<input type="submit" value="dosomethingelse" onclick="javascript: form.action='actionurl2';"/>


你可以像这样呈现按钮:

<input type="submit" name="typeBtn" value="BUY">
<input type="submit" name="typeBtn" value="SELL">

然后在代码中,您可以使用以下值获取值:

if request.method == 'POST':
    #valUnits = request.POST.get('unitsInput','')
    #valPrice = request.POST.get('priceInput','')
    valType = request.POST.get('typeBtn','')

(valUnits和valPrice是我从留下的插图中提取的一些其他值)


处理多个提交按钮的最佳方法是在服务器脚本中使用切换大小写

<form action="demo_form.php" method="get">

Choose your favorite subject:

<button name="subject" type="submit" value="html">HTML</button>
<button name="subject" type="submit" value="css">CSS</button>
<button name="subject" type="submit" value="javascript">Java Script</button>
<button name="subject" type="submit" value="jquery">jQuery</button>

</form>

服务器代码/服务器脚本 - 您提交表单的地方:

demo_form.php

<?php

switch($_REQUEST['subject']) {

    case 'html': //action for html here
                break;

    case 'css': //action for css here
                break;

    case 'javascript': //action for javascript here
                        break;

    case 'jquery': //action for jquery here
                    break;
}

?>

来源: W3Schools.com


array定义为array

<form action='' method=POST>
    (...) some input fields (...)
    <input type=submit name=submit[save] value=Save>
    <input type=submit name=submit[delete] value=Delete>
</form>

示例服务器代码(PHP):

if (isset($_POST["submit"])) {
    $sub = $_POST["submit"];

    if (isset($sub["save"])) {
        // save something;
    } elseif (isset($sub["delete"])) {
        // delete something
    }
}

elseif非常重要,因为如果两者都不会被解析。 请享用。


很简单,您可以在不同的提交按钮上更改表单的操作。

在document.Ready中试试这个

$(".acceptOffer").click(function () {
       $("form").attr("action", "/Managers/SubdomainTransactions");
});

$(".declineOffer").click(function () {
       $("form").attr("action", "/Sales/SubdomainTransactions");
});

您可以给每个输入一个不同的值并保持相同的名称:

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

然后在代码中检查是否触发了:

if ($_POST['action'] == 'Update') {
    //action for update here
} else if ($_POST['action'] == 'Delete') {
    //action for delete
} else {
    //invalid action!
}

唯一的问题是你将你的逻辑与输入中的文本联系起来。 你也可以给每个人一个独特的名字,只需检查$ _POST是否存在该输入:

<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />

在代码中:

if (isset($_POST['update_button'])) {
    //update action
} else if (isset($_POST['delete_button'])) {
    //delete action
} else {
    //no button pressed
}

我想你应该可以读取GET数组中的名称/值。 我认为没有点击的按钮不会出现在该列表中。


更好的解决方案包括使用按钮标签来提交表单:

<form>
    ...
    <button type="submit" name="action" value="update">Update</button>
    <button type="submit" name="action" value="delete">Delete</button>
</form>

这样,国际化和多种显示语言没有不便(在以前的解决方案中,按钮的标签也是发送到服务器的值)。


这里有一个新的HTML5方法, formaction属性:

<button type="submit" formaction="/action_one">First action</button>
<button type="submit" formaction="/action_two">Second action</button>

显然,这在IE9和更早的版本中不起作用,但对于其他浏览器,您应该没问题(请参阅: w3schools.com HTML <button> formaction Attribute )。

就我个人而言,我通常使用Javascript来远程提交表单(以便更快地发现反馈),并将此方法作为备份。 在这两者之间,唯一没有涉及的人是禁用JavaScript的IE <9。

当然,如果您基本上采用相同的操作服务器端,而不管按哪个按钮,但通常如果有两个用户端操作可用,那么它们也将映射到两个服务器端操作。

编辑:正如Pascal_dher在注释中指出的那样,该属性也可以在<input>标签中使用。


<form method="post">
<input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; //any value to post PHP
<input type='submit' name='update' value='update' formAction='updateCars.php'/>
<input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
</form>

<form>
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">    
</form>




submit