【问题标题】:Image Submit Button within a Form表单中的图像提交按钮
【发布时间】:2011-12-25 23:51:07
【问题描述】:

我有一个表单,其中包含图像形式的提交按钮。当用户点击图片按钮时,图片按钮应该起到提交按钮的作用。

代码示例:

<form action="page.php" method="POST">
   <input type="image" name="btn_opentextbox" src="image.png" value="Submit" />
</form>

处理提交:

if($_POST['btn_opentextbox'])
{
    //do something
}

令人惊讶的是,上面的代码曾经在 Firefox 中运行良好。但是,一旦我昨天更新了我的 Firefox,它就根本没有用。我单击按钮,页面被刷新并且没有任何反应。该代码在 IE 中也不起作用。

注意:它适用于 Chrome。

我希望它可以在 Firefox、IE 等中运行。

有什么建议吗?

【问题讨论】:

    标签: php html web-applications


    【解决方案1】:

    你可以添加一个隐藏字段

    <input type="hidden" name="action" value="Submit Form">
    

    在php中你可以做到这一点

    if($_POST['action'] == "Submit Form"){
     do something 
    }
    

    希望对您有所帮助。

    【讨论】:

    • 聪明的。会试一试,让你知道。
    • 先检查数组元素isset(),避免E_NOTICE消息。
    【解决方案2】:

    您应该使用普通的submit-按钮和use CSS to replace the button's look with an image。这应该适用于所有浏览器。

    【讨论】:

      【解决方案3】:

      图片提交按钮

      php代码是

          if(isset($_POST['btn_opentextbox_X']) || isset($_POST['btn_opentextbox_Y']))
      {
          //do something
      }
      

      【讨论】:

        【解决方案4】:

        好的php代码是:

        <input type='image' src='../images/blanc.gif' width='596' height='35'     onFocus='form.submit' name='btn_opentextbox'/>
        
        
            if ($_POST["btn_opentextbox_x"]) && ($_POST["btn_opentextbox_y"])
           {
        
        ......
           }
        

        【讨论】:

        • “好的 php 代码”?就目前而言,当图像提交按钮未提交表单时,您的代码将生成E_NOTICE 消息。您应该检查数组元素 isset().
        • ...$_POST["btn_opentextbox_x"] 也可以合法地包含值 0,因此评估为 false。
        【解决方案5】:

        改为检查btn_opentextbox_xbtn_opentextbox_y。 (实际上是 . 而不是 _ 但 PHP 会破坏它)。

        一些浏览器无法发送服务器端图像地图的,只是坐标。

        而且您似乎忘记了alt 属性。


        或者,使用实际的提交按钮而不是图像映射:

        <button type="submit" name="btn_opentextbox" value="submit"><img src="image.png" alt="Submit"></button>
        

        ...但请注意,某些版本的 IE 在提交时会发送 HTML 内容而不是值。

        【讨论】:

          【解决方案6】:

          您是否在该表单中有多个按钮并且需要知道该表单已提交? 如果只有一个提交按钮,我建议使用以下代码:

          if ($_SERVER['REQUEST_METHOD'] == 'POST') {
              // process form submission
              header('Location: page.php?result=success');
          }
          

          这样您就可以确定表单是否已提交,并且如果用户在提交表单后点击重新加载按钮,也可以避免重复提交。

          【讨论】:

            猜你喜欢
            • 2011-03-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-13
            • 1970-01-01
            • 1970-01-01
            • 2019-09-24
            相关资源
            最近更新 更多