【问题标题】:form values submit control表单值提交控件
【发布时间】:2012-01-31 14:28:53
【问题描述】:

对我来说,琐碎的任务变得非常耗时。我正在为 Web 项目做非常基本的用户界面(专注于业务逻辑)。如果我的问题已经有确切答案,请重定向我,我将立即删除它。我真的不知道该搜索什么,基本的短语太模糊了。

场景:

我需要使用 /someurlrequest?edit=(idOfelement) 或 /someurlrequest?populate=(idOfElement) 获取请求,但我得到 /someurlrequest?edit=(idOfelement)&populate=(idOfElement) (GET 只是为了显示发送什么,首选POST)

每当出现一组元素时,我都希望有两个按钮,但是每当我按照我在下面显示的方式进行操作时,表单提交操作都会抓取两个值(编辑和填充)以获取请求,这意味着我无法进一步处理请求,因为我不知道在传递两个名称/值对时按下了哪个按钮,我说 Edit=1 和 Populate=1 ,我显然只想要一对 Edit=1 或 Populate=1。

 <c:forEach var="TrainingProgram" items="${programbank}">

     <form method="get" action="/someurlrequest">
        <p> ${TrainingProgram.name}</p 
        <p> ${TrainingProgram.shortDescription}</p>

   <p>    
     <input value="Edit" type="submit" />  
     <input name="edit" style="display: none;" value="${TrainingProgram.programId}" />
     <input value="Populate" type="submit" />
     <input name="populate" style="display: none;" value="${TrainingProgram.programId}" />   

   </p>
     </form>
 </c:forEach>

我将能够摆脱基本:

 <a href="/somerequest/edit=${TrainingProgram.programId}"> Edit <a/>
 <a href="/somerequest/populate={TrainingProgram.programId}"> Populate <a/>

但这会限制我使用 GET,正如我之前提到的,我想要 POST。

是否可以用纯 HTML 来解决它(遗漏了一些非常琐碎的东西?)? JS 解决方案也很受欢迎,尽管我只在复制粘贴黑盒级别上理解 JS,我不希望人们为我工作然后有效地责怪我,除非这真的是在 JS 中做的基本任务:-)

谢谢,

【问题讨论】:

    标签: html forms controls submit


    【解决方案1】:

    嗯,你应该可以通过两种不同的形式来做到这一点:

     <p> ${TrainingProgram.name}</p> 
     <p> ${TrainingProgram.shortDescription}</p>
     <form method="POST" action="/someurlrequest">    
     <input value="Edit" type="submit" />  
     <input name="edit" type="hidden" value="${TrainingProgram.programId}" />
     </form>
     <form method="POST" action="/someurlrequest">
     <input value="Populate" type="submit" />
     <input name="populate" type="hidden" value="${TrainingProgram.programId}" />
     </form>
    

    更多解释:

    基本上,当您提交表单时,表单中包含的所有输入表单都会发送到操作 URL。因此,即使您在同一个表单中有两个提交按钮,它们也会发送相同的值。根据经验,您应该只有一个表单提交按钮(除非您在 Javascript 中有更复杂的逻辑)。

    【讨论】:

    • 谢谢,我一直在考虑全局表单,单个表单必须封装所有输入。
    • 顺便说一句,我编辑了答案,这样您就不必在输入中使用display:none
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2016-07-24
    相关资源
    最近更新 更多