2011-11-10 116 views
6

我有一個窗體,它具有圖像形式的提交按鈕。當用戶點擊圖片按鈕時,圖片按鈕應該扮演提交按鈕的角色。表單中的圖像提交按鈕

代碼示例:

<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等中工作

有什麼建議嗎?

回答

6

您可以添加一個隱藏字段

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

,並在PHP中,你可以做到這一點

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

希望這有助於。

+0

智能之一。會試一試,讓你知道。 – user311509

+0

首先檢查數組元素'isset()'以避免'E_NOTICE'消息。 – MrWhite

2

改爲檢查btn_opentextbox_xbtn_opentextbox_y。 (它實際上是.而不是_,但PHP損壞了它)。

某些瀏覽器未能發送服務器端圖像映射,只是座標。

而你似乎已經忘記了alt屬性。


或者,使用一個實際的提交,而不是圖像映射按鈕:

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

...但要注意,提交時IE的某些版本將發送HTML內容,而不是價值。

0

您是否在該表單中有多個按鈕,並且需要知道表單已提交? 如果只是一個單一的提交按鈕,我建議使用下面的代碼:

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

這樣,如果提交表單,也避免重複提交,如果提交表單後,用戶點擊Reload按鈕,你一定會。

3

圖像提交按鈕

PHP代碼是

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

好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"]) 
    { 

...... 
    } 
+0

「好的php代碼」?就目前而言,當表單未被圖像提交按鈕提交時,您的代碼將生成一條「E_NOTICE」消息。你應該檢查數組元素'isset()'。 – MrWhite

+0

...''_POST [「btn_opentextbox_x」]'可以合法地包含值'0',因此評估爲false。 – MrWhite