代码之家  ›  专栏  ›  技术社区  ›  Jon Cox

一个表单、多个提交按钮和提交链接[副本]

  •  3
  • Jon Cox  · 技术社区  · 15 年前

    可能重复:
    Multiple submit buttons in an HTML form

    <input type="submit" name="foo" value="Foo Foo">
    

    <a href="" onclick="parentNode.submit();return false;">
    Bar
    </a>
    

    如何区分用作提交按钮的链接?



    我不确定这是否相关:

    <form action="foobar" method="post" enctype="multipart/form-data">
    

    我正在使用Flask(一个基于Werkzeug的微框架),它使用Python(本例中是2.6)。

    5 回复  |  直到 7 年前
        1
  •  3
  •   Nathan Wheeler    15 年前

    我的第一个问题是问你是否需要那么多不同的方式来提交相同的表格?这听起来像是你的设计应该被修改,使它更简单的用户,这将反过来解决你的问题。

    如果您必须拥有所有不同的提交按钮/链接,并且需要知道按下了哪个按钮/链接,请使用以下方法:

    <input type="hidden" id="submitClicked" />
    <input type="submit" onclick="javascript:document.getElementById('submitClicked').value='linkName';return true;" id="linkName">Submit</input>
    

    注意:我没有测试这段代码,它只是我的头脑,因此可能需要一些修改。

        2
  •  1
  •   D'Arcy Rittich    15 年前

    您可以创建一个名为 submitSource ,并根据需要从链接或按钮设置该值 onclick 事件处理程序。然后您可以在服务器端检查该值。

        3
  •  1
  •   RoToRa    15 年前

    <ìnput type="submit"> 对于“提交链接”就像正常的提交按钮,并使用CSS样式,他们看起来像链接。

    这有两个巨大的优势,它将(a)工作出任何额外的代码,可能打破和将(b)工作在每一个单一的浏览器在这个世界上。

        4
  •  0
  •   Community Mohan Dere    9 年前

    RedFilter's answer

    我通常对所有提交按钮使用一个名称(“command”或类似名称),因为当然只有一个按钮被发送过。然后,我的服务器端代码只查看该字段的值,以确定要执行的操作。

    提交链接可以将“command”参数附加到表单的操作中,例如:

    <a href="" onclick="parentNode.action += "?command=bar"; parentNode.submit(); return false;">
    

    <a href="" onclick="parentNode.action += "?bar=bar+bar"; parentNode.submit(); return false;">
    

    当然,如果您执行上述任一操作并且表单使用POST而不是GET(就像大多数表单一样),那么是否从服务器上的同一源获取参数值将取决于您使用的服务器端机制。例如,Java的 ServletRequest#getParameter 方法并不在意,它同时在GET和POST数据中查找,而在其他一些技术中,它们的区别更大。没问题,你只要确定你是从正确的地方来的。

        5
  •  0
  •   Joel Etherton    15 年前

    我建议不要使用 onclick="parentNode.submit();return false;"

    function submitMe(linkID)
    {
        document.getElementById("hfWhichButtonSubmittedMe").value = linkID;
        document.getElementById(linkID).parentNode.submit();
        return false;
    }
    
    ...
    
    <a href="" id="mySubmitLink1" onclick="return submitMe('mySubmitLink1');">blah blah</a>