2010-04-21 106 views
1

我的頁面上有一個按鈕標籤,並帶有一個值。Jquery Apache - IE問題

<button class='btn' value='value'>show value</button> 

我有這樣的jQuery代碼:

$('.btn').click(function() { 
    var w = 'value = '+$(this).val()+'/text = '+$(this).html(); 
    alert(w); 
}); 

在FF,沒有問題的結果是OK(顯示:值=值/文本=顯示值)。
問題出現在IE8中,它顯示了我的測試服務器和生產服務器的不同結果。 測試服務器是具有標準XAMPP安裝的本地機器。生產服務器是基於Linux的服務器,使用apache,php和mysql。

測試服務器的結果正常(顯示爲FF),生產服務器的結果不好(顯示:value = show value/text:show value)。

任何想法,如果它是導致錯誤的Apache?我知道使用val()有一些問題,因爲IE將它視爲屬性而不是值。

問題是,將jQuery從val()更改爲attr('value')會退出很多工作(此實現已經在很多頁面上),我認爲可以更容易地更改某些內容在網絡服務器上。

+1

這是IE的一個已知問題,請看這個http://www.w3schools.com/tags/tag_button.asp – Lazarus 2010-04-21 14:37:26

回答

0

這是IE已知的客戶端問題,我無法充分解釋服務器之間的差異,其他可以說確保您使用相同的瀏覽器和版本進行測試。

From W3C:

重要:如果您在HTML表單中使用按鈕元素,不同的瀏覽器將提交不同的值。 Internet Explorer將提交<button></button>標記之間的文本,而其他瀏覽器將提交value屬性的內容。使用輸入元素在HTML表單中創建按鈕。

獲得一致的行爲,最簡單的方法(從.attr('value')不談,我強烈推薦)從此是更換您的按鈕:

<input type="submit" class='btn' value='value' /> 

不幸的是這不會給你的顯示器值,但是如果你有一個代理按鈕,你可以得到的按鈕同樣的效果,這是混亂的,但它使IE工作:

<input type="button" class='btnPoxy' value='show value' /> 
<input type="submit" class='btn' value='value' style='display: none;' /> 

的jQuery爲此:

$(".btnProxy").click(function() { 
    $(this).next(".btn").click(); 
});