HTML表单最佳实践


HTML - forms best practice

有一个包含更多提交按钮的表单可以吗?我的意思是,我有一个包含一些输入字段和一个表的表单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和"country"中的所选项目。附言:我想知道它是否是最优的,以及其他程序员将如何处理这些东西

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

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

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

查看此

是的,你可以在一个表单中有更多的提交按钮。由于你使用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   
?>

我刚刚完成了一个系统,在这个系统中,你可以更新数据记录,我使用的功能之一是使用多个提交来允许用户用不同的选项"标记"更新。例如"活动"、"终止"、"禁用"。它保存了一个包含多个选项的下拉框,并保持了系统的直观性。

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