2010-05-19 130 views
0

我在創建帶有文本和圖像的按鈕時遇到問題。HTML +帶文本和圖像的按鈕

<td> 

<button type="submit" name="report" value="Report" 
<?php 
if($tab == 'Excel') 
    echo "id=\"tab_inactive\""; 
else 
    echo "id=\"tab_active\"" ; ?>> 
<img src="images/report.gif" alt="Report"/>Report 
</button> 

<button type="submit" name="excel" value="Excel" 
<?php 
if($tab == 'Excel') 
    echo "id=\"tab_active\""; 
else 
    echo "id=\"tab_inactive\"" ; ?>> 
<img src="images/Excel.gif" alt="Excel" width="16" height="16" /> Excel 
</button> 

</td> 

這裏$標籤是

$tab = strlen(trim($_POST[excel]))>0 ? $_POST[excel] : $_POST[report]; 

我試過這種方式,但這表現如此奇怪。 點擊按鈕: - 提交功能在Firefox中正常工作,但不在IE中。

而不是提交值(在這個例子中的值是「報告」和「Excel」),實際上是提交按鈕的標籤。

這就是如果我檢查數組PRINT_R($ _ POST)的值。它的價值是

Array ([report] =>(Icon that i used) Report 
     [excel] => (Icon that i used) Excel 
     [frm_analysis] => [to_analysis] =>) 

在這裏,我有超過1個按鈕後,所有的標籤都提交eventhough按下其中之一。我不知道如何捕捉哪個按鈕被按下。

我甚至試過改變button type=button and onclick="document.formname.submit()"即使這樣做也是一樣的。

你能幫我解決這個問題嗎?

回答

1

<button> s在IE中被破壞。我認爲他們在IE7或8中進行了更正。頁面是否處於標準模式?這可能有助於在IE7或8.

如果您需要支持破損版本,你可以嘗試和JS解決它,如果你不介意依賴它。例如:

<script type="text/javascript"> 
    function buttonclicked(button) { 
    button.form.elements["buttonclicked"].value = this.value; 
    } 
</script> 

<input type="hidden" name="buttonclicked" value=""> 
<button type="submit" name="report" onclick="buttonclicked(this)"> 
<img src="images/report.gif" alt="Report"/>Report 
</button> 
<button type="submit" name="excel" onclick="buttonclicked(this)"> 
<img src="images/Excel.gif" alt="Excel" width="16" height="16" /> Excel 
</button> 

我不認爲有比避免<button>和使用<input type=submit>如果你需要區分上被點擊之間以外的任何其他方式。

0
<button title="Search" onClick="javascript:executeFunction();">Search<br /><img src="images/search_icon.gif"/><br />More Text</button> 
+0

謝謝你的快速回復。這裏onclick,我想提交表單。所以如果我寫onclick = document.Formname.submit();.我將如何知道哪個按鈕被按下。我是否需要通過我的javascript或其他選擇中的隱藏文本字段處理該按鈕值? – satya 2010-05-19 14:29:57

+0

就我個人而言,我會使用executeFunction(this),並讓executeFunction()設置一個隱藏字段,以確定在從函數內部進行實際提交之前哪個按鈕已被點擊(由此識別) – 2010-05-19 15:21:45

0

因爲你的圖像包含在<button> (<input>?)標籤內,它可能被包含在價值。

爲什麼不使用img與onclick事件或與GET請求的href?

1

不幸的是,這是IE在處理<button>元素時的默認行爲。據我所知,這個問題沒有真正的解決辦法,雖然有很多解決方法。

我的建議如下:

創建一個名爲report_type單選按鈕控件(或者不管你選擇),有兩個單選按鈕:一個用於Excel和一個報告。此外,請包含一個常規提交按鈕。您可以隱藏單選按鈕並提交按鈕(display: none),並創建(通過JS)兩個按鈕,分別標記爲「報表」和「Excel」。在點擊其中一個按鈕時,會檢查適當的單選按鈕,並提交表單。

這將允許您創建當前表單中的表單,同時爲沒有javascript支持的用戶提供工作回退。

而不是按鈕的值,你現在可以看無線電的價值,以決定你想要使用哪種形式的報告。

0

沒有測試過,只有一個念頭:

<td> 

<button type="submit" name="active_page" value="Report" 
<?php 
if(isset($_POST['active_page']) && $_POST['active_page'] == 'Excel') 
    echo "id=\"tab_inactive\""; 
else 
    echo "id=\"tab_active\"" ; ?>> 
<img src="images/report.gif" alt="Report"/>Report 
</button> 

<button type="submit" name="active_page" value="Excel" 
<?php 
if(isset($_POST['active_page']) && $_POST['active_page'] == 'Excel') 
    echo "id=\"tab_active\""; 
else 
    echo "id=\"tab_inactive\"" ; ?>> 
<img src="images/Excel.gif" alt="Excel" width="16" height="16" /> Excel 
</button> 

</td> 

真的不明白你的問題,是這樣的:

你想現在至極按鈕被點擊,以顯示選項卡或和其他標籤?對?