【问题标题】:HTML - forms best practiceHTML - 表单最佳实践
【发布时间】:2012-07-19 11:12:01
【问题描述】:

可以有一个带有更多提交按钮的表单吗? 我的意思是我有一个包含一些输入字段和一个表格的表格 3个按钮,可以以不同的格式导出一些信息

<form id="form1" name="form1" method="post" >
    <label for="country"><strong>Countries: </strong></label><br />
    <select id="country" name="country">
      <?php
      //some php code here
      ?>
    </select> 
    <br />
    <br/>
    <label for="start_date"><strong>Start date: </strong></label><br />
    <input name="start_date" type="text" id="start_date" value="<?php if(!empty($start))echo $start; ?>" size="20" />
    <br />
    <br />  
    <label for="stop_date"><strong>Stop date: </strong></label><br />
    <input name="stop_date" type="text" id="stop_date" value="<?php if(!empty($stop)) echo $stop; ?>" size="20" />
    <br />
    <br />
        <input type="submit" name="fill_table" value="Retrieve data" /> 

    <div id="table">
      <h1>&nbsp;</h1>
      <hr />
      <h2>Sales Report</h2>
        <table class="display" id="data_table" >
          <thead>
              <tr>
                <th>Product</th>
                <th>Date</th>
                <th>Quantity</th>
              </tr>
          </thead>
          <tbody>
            <?php
                //some php code here
            ?>
          </tbody>
        </table>
        <br />
        <br />
        <br />
        <input type="submit" class="button" name="export_xls" value="Export xls" />
        <input style="margin-left:10px;" type="submit" name="export_html" value="Export html" />
  </form>

这样做可以吗,还是我应该制作 3 个表单,每个表单都有一个特定的提交按钮?每次我按下提交按钮时,我都会对输入字段感兴趣:start_date、stop_date 和“国家”中的选定项目。 附言我想知道它是否是最优的以及其他程序员将如何处理这些东西

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    主要问题是:当用户在文本输入字段中按下 Enter 时会发生什么?在大多数浏览器上,表单数据会被提交,但这是否对应于按下其中一个按钮,哪个按钮?参见例如问题Multiple submit buttons in an HTML form。

    每个表单只有一个提交按钮是最安全的。 (但是,为了方便用户,将具有相同功能的提交按钮添加到长表单中是安全的。)这意味着用户将通过使用单选按钮或选择菜单在替代方案(例如,输出格式)之间做出选择,而不是通过按钮之间的选择。不过,这并不总是实用的。

    【讨论】:

      【解决方案2】:

      我刚刚完成了一个您可以更新数据记录的系统,我使用的功能之一是使用多次提交以允许用户使用不同的选项“标记”更新。例如“活动”、“待定”、“禁用”。它保存了一个包含多个选项的下拉框并保持系统直观。

      具有不同值的多个提交按钮允许您提交表单,其中提交字段具有多个值之一,并且可以改进用户界面。另外,它的有效 HTML。

      【讨论】:

        【解决方案3】:

        是的,您可以在一个表单中拥有更多提交按钮。由于您使用 php 处理提交的表单,因此我不会为每个提交按钮设置与@NoZip 建议的名称相同的名称,而是使用不同的名称,以便在代码的 php 处理部分中我会问:

        <?php
            if (isset($_POST["submitButtonName1"]))
                some code here...
            else if (isset($_POST["submitButtonName2"]))
                some other code here...
            else
                code logic for no submit button clicked   
        ?>
        

        【讨论】:

        • 使用不同的名称而不是一个名称和不同的值有什么好处?
        • @Dpolehonski:我不知道其他编程语言有什么好处(如果有的话),但我指的是 PHP 语言。如果您不给它们不同的name 属性,您将如何检查是否在 PHP 中单击了某些按钮?
        • 你比较提交的“名字”的值比如if "bsubmit" == "opt1" //do something if "bsubmit" == "opt2" //do something else
        • @nickNatra:正如他们所说,不讨论偏好。我觉得我的方式有点“干净”,因为每个“动作”都有“一个”按钮。此外,IMO,为什么不使用按值检查最有意义的语句是 - 如果您有一个多语言网站并且您按值检查 - 您的脚本在这种情况下会崩溃。
        【解决方案4】:

        我不认为这是一个坏主意。但是您所有的提交按钮都必须具有相同的 name 属性。

        查看this

        【讨论】:

        • 即使我不使用相同的“名称”属性,它也能正常工作,但我认为这种方式更合适
        • 可以这样做,但我认为选择“格式”是一个更好的主意。
        猜你喜欢
        • 2015-05-25
        • 1970-01-01
        • 2014-06-21
        • 2016-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多