Javascript $(this)[0]的安全性/可靠性/跨浏览器兼容性如何。defaultValue

Javascript $(this)[0]的安全性/可靠性/跨浏览器兼容性如何。defaultValue,javascript,jquery,html,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开发工具中的D

如果您能就$(this)[0].defaultValue的使用提供一些反馈,以确定文本框值是否已从原始值更改,我将不胜感激

//keyUp event

if($(this)[0].defaultValue != $(this).val())
{
   //Field has been modified mark as dirty
}
在Chrome中,它似乎生成了所需的输出,因为defaultValue始终是文本框加载到DOM中时使用的原始值。然而,直到最近,我才在Chrome开发工具中的DOM对象中找到了这个值,寻找完全不同的东西,我担心它可能会带来一大堆问题。此外,谷歌没有出现太多,这让我更加担心

非常感谢您的反馈

干杯
罗布:看起来很安全。我刚刚使用了这个提琴:在chrome/firefox 3.6/safari 4/ie8上进行了测试,它们的行为都是一样的

这里有描述:并且没有关于兼容性问题的通知


这里也有描述:它似乎与ie 5及以上兼容,所以我不知道为什么它不应该安全使用。

。defaultValue
是非标准的,因此在任何W3C草案/规范中都没有提及。如果您负责呈现HTML标记,则HTML5
data-
属性似乎是跨浏览器获取所需行为的非常方便的方法

所以你可以把它渲染成

<input type="text" value="foo" data-default="foo" />

示例

我喜欢这两个答案-请原谅我的无知,但这在不兼容Html5的浏览器中仍然有效吗-我猜是的,因为对于jQuery来说,这只是另一个属性?我渴望进入HTML5,但我必须克制自己,在开始“玩”之前完成当前的项目。此外,我的网站中需要此解决方案的部分与搜索引擎无关,因此我不担心w3c合规性与潜在的SEO惩罚之间的关系,这在向HTML5的过渡方面似乎还有点悬而未决。所以这可能是一个强大的alternative@DrRob:是的,确实如此,这也适用于非HTML5浏览器。再次感谢-我实际上使用了您的替代方案,它工作得很好-我决定使用$(此)[0]。复选框上的默认值太低,看起来不起作用-我一直得到“true”作为默认值,无论其原始状态如何。我不确定它是否为非标准值,请参阅:尚未使用此值,但
HTMLInputElement.defaultChecked
以查看复选框?谢谢你的回答,我将投你一票,因为你的回答更直接地针对最初的问题@詹迪-如果可以的话,我也会把你的答案记对,因为你的答案提供了一个很好的选择。
$('input').data('default') // === 'foo'