Jquery .val()浏览器差异

时间:2010-09-08 03:03:36

标签: jquery browser input wiki

声明
使用jquery,如果你有一个按钮元素定义如下:<button value="123">456</button>

如果您使用.attr('value');.val();

,浏览器会为您提供不同的值

<小时/> 原因?
<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
&gt; = Internet Explorer 8:
 .val()= 123 |显示文字= 456
&lt; = Internet Explorer 7:
 .val()= 456 |显示文字= 456

2 个答案:

答案 0 :(得分:4)

阅读w3 specification我认为Chrome和Firefox是正确的。特别是因为这个片段:

  

用BUTTON创建的按钮   元素功能就像按钮一样   用INPUT元素创建,但是   它们提供更丰富的渲染   可能性: BUTTON元素可能   有内容。

W3规范将<button></button>标记之间的信息称为内容而不是,这是我观察的结果。另一个提示是Internet Explorer是唯一一个返回不同值的人,我相当确定Internet Explorer是宇宙中所有痛苦的根源。


我还决定在Mac上测试Safari 5,Opera,Chrome和Firefox 3.6.8。全部返回456显示文本,123返回.val()

答案 1 :(得分:0)

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

您可能已经发现尚未 Internet Exploiter旧版本的另一个错误/功能......叹息!