【问题标题】:why does a form behaviour change depending of the controls order?为什么表单行为会根据控件顺序而变化?
【发布时间】:2015-08-01 16:37:50
【问题描述】:

我的代码中有一些我昨天不明白的地方。 它与 JSP 页面有关。 此 JSP 页面包含一个表单,该表单具有: - 2 个 submut 按钮(具有相同的名称属性但不同的值属性) - 一个隐藏字段,其名称属性与 2 个按钮相同,但值属性不同。

我为什么要这样做?因为我需要给用户 3 种不同的方式来提交表单。提交时,表单会调用一个 servlet,该 servlet 将确定相关参数的值并执行相应的操作。

当我通过 javascript 函数(按预期工作)选择列表中的条目时,实际设置了隐藏字段值。

JSP表单代码:

<form class="form-horizontal text-left" id = "form" action="SubmitMainForm" method="get">
    <input type="hidden"  id="listbox_ii" name = "sender_control">
...
    <button type="submit" name = "sender_control" id = "button_search" value = "button_search" class="btn btn-default col-xs-4">Rechercher</button>
                        <button type="submit" name = "sender_control" id = "button_delete" value = "button_delete" class="btn btn-default  col-xs-4  col-xs-offset-2">Effacer</button>

...
</from>

这不起作用。

按照我的说法,当我通过 2 个按钮之一提交时,sender_control 参数的值始终为 ""。 但是,如果我将隐藏字段放置在表单中的 2 个按钮之后,它可以正常工作:

<form class="form-horizontal text-left" id = "form" action="SubmitMainForm" method="get">

...
    <button type="submit" name = "sender_control" id = "button_search" value = "button_search" class="btn btn-default col-xs-4">Rechercher</button>
                        <button type="submit" name = "sender_control" id = "button_delete" value = "button_delete" class="btn btn-default  col-xs-4  col-xs-offset-2">Effacer</button>

...
    <input type="hidden"  id="listbox_ii" name = "sender_control">
</from>

这很好用。

你能解释一下原因吗?为什么隐藏字段的位置会改变行为?

提前致谢。

【问题讨论】:

    标签: html jsp


    【解决方案1】:

    当你提交表单时,其中成功的控件会按顺序出现在表单数据中。

    提交按钮只有用于提交表单才会成功。

    您的服务器端代码显然会忽略后续值(如果它们与之前的值同名)。

    所以如果隐藏输入出现在按钮之前,那么sender_control的值将是隐藏输入的值。

    如果它出现在按钮之后,则sender_control 的值将是您单击的按钮。

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 1970-01-01
      • 2013-04-13
      • 2012-10-03
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      相关资源
      最近更新 更多