2008年12月11日

[HTML] IE 表單 Enter 的 Bug

小魚發現了一個 IE 的表單的問題:

如果表單上只有一個 text 欄位和多個有 name 屬性的 submit 按鈕,那麼當表單焦點在 text 欄位時,我們按下 Enter 鍵時,瀏覽器預設會把表單送出。

但是如果是在 IE 上執行這個動作,那麼後端的 PHP 程式只會收到 text 欄位的值,而不會有 submit 按鈕的值;而其他瀏覽器 (如 Firefox ) 則不會有這個問題。

以下是範例:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Enter Test</title>
</head>
<body>
<?php
var_dump($_POST);
?>
<form method="POST" action="?">
    <p>
    <input type="text" name="T1" size="20">
    <input type="submit" value="Submit1" name="B1">
    <input type="submit" value="Submit2" name="B2">
    </p>
</form>
</body>
</html>

以上程式請存為 iebug.php ,放在網站根目錄下執行。在 IE 執行並在 text 欄位輸入 abc 按下 Enter 鍵後,得到的結果如下:

array
  'T1' => string 'abc' (length=3)

而在 Firefox 結果如下:

array
  'T1' => string 'abc' (length=3)
  'B1' => string 'Submit1' (length=7)

也就是 Firefox 會將按下 Enter 鍵當做是按下第一個 Submit 鈕,而 IE 就不把它當做一回事了。

我幫小魚查了一下資料,發現國外已經有人提出這個 IE 的特色 (Bug?) 了:

小魚也發現如果在第一個 text 欄位後再放一個 text 欄位,那麼 IE 就會正常 (?) 把按下 Enter 鍵視為按下第一個 Submit 鈕。

在小魚提出這個發現後,我也剛好查到國外有人提出了相關的解法:

做法就是把剛剛額外加的 text 欄位用 style="visibility:hidden;display:none;" 藏起來。

以上幫小魚記錄一下這個問題,以後方便她查囉。



Posted by jaceju at 樂多Roodo! │21:42 │回應(0)Web 開發
樂多分類:網路/3C 工具:編輯本文
Ads by Roodo!