2012-02-06 86 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