安全/可靠/跨浏览器兼容的是$(this)[0] .defaultValue

时间:2011-03-09 10:32:56

标签: javascript jquery html

我希望得到一些关于使用$(this)[0] .defaultValue来确定文本框值是否与原始值有所不同的反馈,例如

//keyUp event

if($(this)[0].defaultValue != $(this).val())
{
   //Field has been modified mark as dirty
}

在Chrome中,似乎生成了所需的输出,因为defaultValue始终是文本框加载到DOM中的原始值。但是,我最近才发现这个值在浏览Chrome开发工具中的DOM对象后寻找完全不同的东西,我担心它可能会带来一大堆问题。此外,谷歌没有太多关注我更加关注......

任何反馈都非常感谢。

干杯 罗布

2 个答案:

答案 0 :(得分:8)

看起来很安全。我只是用这个小提琴:http://jsfiddle.net/rXsrQ/并在chrome / firefox 3.6 / safari 4 / ie8上测试它们,它们的行为都相同。

此处描述:https://developer.mozilla.org/en/DOM/HTMLTextAreaElement并且没有关于兼容性问题的通知。

这里也有描述:http://msdn.microsoft.com/en-us/library/ms533718(v=vs.85).aspx并且似​​乎与ie 5和up兼容,所以我似乎不应该使用它是不安全的。

答案 1 :(得分:3)

.defaultValue是非标准的,因此未在任何 W3C 草案/规范中提及。如果您负责呈现的HTML标记,那么 HTML5 data-属性似乎是一种非常方便的方式,可以跨浏览器获得所需的行为。

所以你可以像

那样渲染它
<input type="text" value="foo" data-default="foo" />

jQuery将获取这些data-属性,并将该部分存储在-后面,作为该特定节点的数据扩展对象的关键字。这意味着你可以通过调用

来访问这些值
$('input').data('default') // === 'foo'

示例http://jsfiddle.net/zAuPf/