2010-09-08 239 views
3

的聲明
與jQuery如果有一個按鈕元素定義如下:如果您使用.attr('value');.val();Jquery的.VAL()瀏覽器的差異

<button value="123">456</button>

瀏覽器將出現不同的值


原因?
A <button>元素簡寫爲 <input type="button">

你設置的<input type="button">價值的方式是設置value="Click Me"

因此<input type="button" value="Click Me">相同<button>Click Me</button>


問題
爲什麼使用 .val()返回不同的值在不同的瀏覽器。誰是對的?
Firefox:
.val()= 123 |顯示文本= 456
Chrome:
.val()= 123 |顯示文本= 456
> = Internet Explorer 8:
.val()= 123 |顯示文本= 456
< = Internet Explorer 7:
.val()= 456 |顯示的文字= 456

+0

http://www.jsfiddle.net/fD9xd/ FF和IE對我來說都是一樣的行爲: - \ – 2010-09-08 03:11:59

+0

@Floyd Pink - IE 8顯示「123」,但IE 6顯示「456」 。 – 2010-09-08 03:16:04

+0

我已更正帖子。 <= IE 7顯示456. – Hailwood 2010-09-08 03:20:37

回答

4

讀過w3 specification我被引導認爲Chrome和Firefox是正確的。特別是因爲這個這個片段的:只有像input元素創建按鈕 按鈕 元件功能創建

按鈕,但 他們提供更豐富的渲染 可能性:按鈕元素可以 有內容。

W3的規格是指<button></button>標籤之間發現爲內容而不是,這是什麼使我對我的觀察的信息。另一個暗示是Internet Explorer是唯一一個返回不同價值的網站,我相當確信Internet Explorer是宇宙中所有痛苦的根源。


我還決定在Mac上測試Safari 5,Opera,Chrome和Firefox 3.6.8。所有返回456文本顯示和123作爲.val()

+1

這個問題似乎是jQuery在IE 6時拾取錯誤的值。 – 2010-09-08 03:20:40

0

我在IE 8.0.6001。*它的行爲與Firefox完全相同 - http://www.jsfiddle.net/AKGsd/3/

您可能已經發現了尚未 Internet Exploiter舊版本的另一個bug /功能...嘆息!