在IE7中提交未在enter-key上发送的按钮值

时间:2012-02-06 03:35:51

标签: php html form-submit

我刚刚发现了一些我以前从未注意到的东西,而是处理(常规,无JS)形式。

如果通过点击Submit按钮提交表单,则会发送Submit按钮数据(&submit=Submit或其他类似数据)。

但是,使用Enter键提交时,相同的表格会省略Submit按钮数据。

示例表单:

<div id="messagebox">
    <?php 
        echo 'txt: [' . $_REQUEST['txt'] . ']<br>';
        echo 'submit_btn: [' . $_REQUEST['submit_btn']  . ']<br>';
     ?>
</div>
<hr>
<div id="formbox">
    <form method="POST" action="?">
        <input type="text" name="txt" id="txt" value=""><br>
        <input type="submit" name="submit_btn" id="submit_btn" value="Submit"><br>
    </form>
</div>

[它应该在提交表单时显示两个变量,但是当按下Enter键时它会忽略Submit按钮数据。]

我一直在使用submit POST变量来进行服务器端检查。我想我将不得不添加隐藏的输入或其他东西。

无论如何,问题是:这是正常行为吗?如果是这样,为什么?

我假设Enter键只是模仿了Submit按钮。我现在猜测它没有。如果“提交”按钮是表单的一部分,但恰好没有被点击,为什么不与其余数据一起发送?

2 个答案:

答案 0 :(得分:2)

你错过了$ _REQUEST中的下划线,现在把它搞砸了

<div id="messagebox">
    <?php 
        echo 'txt: [' . $_REQUEST['txt'] . ']<br>';
        echo 'submit_btn: [' . $_REQUEST['submit_btn']  . ']<br>';
     ?>
</div>

答案 1 :(得分:0)

使用回车键,表单提交正确。但是在IE7中,提交按钮值会丢失,行为怪异。因此,您可以使用带有固定文本的隐藏文本字段来检查表单是否已提交。谢谢

<div id="messagebox">
    <?php 
        echo 'txt: [' . $_POST['txt'] . ']<br>';
        echo 'submit_btn: [' . $_POST['submit_btn']  . ']<br>';
        echo 'checker: [' . $_POST['checker']  . ']<br>';
     ?>
</div>
<hr>
<div id="formbox">
    <form method="POST" action="form.php" name="frms">
        <input type="text" name="txt" id="txt" value=""><br>
        <input type="hidden" name="checker" value="POST SUCCESS">
        <input type="submit" name="submit_btn" id="submit_btn" value="Submit">  
    </form>
</div>