2010-09-08 88 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 /功能...叹息!