2012-02-06 67 views
0

我刚刚注意到一些我从来没有注意过,而在(常规,无JS)的形式工作。提交按钮的价值没有发送输入密钥在IE7

如果通过点击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> 

[它应该显示两个变量时表单提交,但是它省略被按下时,输入提交按钮数据。]

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

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

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

+0

请问您可以发布它的HTML代码,因为它取决于您如何标记和设置窗体?谢谢。编辑为 – ionFish 2012-02-06 03:39:37

+0

添加示例。你可以在这里看到它的行动:http://www.altastic.com/formtest.php – 2012-02-06 03:55:08

+0

似乎用最新的firefox罚款,按下输入。 – ionFish 2012-02-06 04:02:04

回答

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> 
+0

你说得对。它似乎也影响IE8。 IE9和所有其他浏览器都没有表现出这种行为,所以我想它已经下降到血腥的IE的不兼容性了。 – 2012-02-06 14:23:56

2

你已经错过了在$ _REQUEST下划线,, CHCK它现在

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

对不起,这是我在编写示例时犯的一个错字。真正的例子没有这个问题。如果是这样,无论使用哪种表单提交方法,都不会返回任何内容。 – 2012-02-06 05:52:34