我希望得到一些关于使用$(this)[0] .defaultValue来确定文本框值是否与原始值有所不同的反馈,例如
//keyUp event
if($(this)[0].defaultValue != $(this).val())
{
//Field has been modified mark as dirty
}
在Chrome中,似乎生成了所需的输出,因为defaultValue始终是文本框加载到DOM中的原始值。但是,我最近才发现这个值在浏览Chrome开发工具中的DOM对象后寻找完全不同的东西,我担心它可能会带来一大堆问题。此外,谷歌没有太多关注我更加关注......
任何反馈都非常感谢。
干杯 罗布
答案 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'