Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不存在属性HTML输入字段_Javascript_Jquery_Html_Input Field - Fatal编程技术网

Javascript 不存在属性HTML输入字段

Javascript 不存在属性HTML输入字段,javascript,jquery,html,input-field,Javascript,Jquery,Html,Input Field,将不存在的属性附加到html元素以便在jquery中使用,这是一种好的做法。比如说 <input type="text" valrule="someregexstring" /> 然后,只需使用jquery选择包含名为valrule的属性的所有元素,并解析正则表达式字符串 就编程标准和最佳实践而言,这是一个“禁区”吗?使用HTML5数据前缀作为新属性,如下所示: <input type="text" data-valrule="someregexstring" />

将不存在的属性附加到html元素以便在jquery中使用,这是一种好的做法。比如说

<input type="text" valrule="someregexstring" />

然后,只需使用jquery选择包含名为valrule的属性的所有元素,并解析正则表达式字符串


就编程标准和最佳实践而言,这是一个“禁区”吗?

使用HTML5数据前缀作为新属性,如下所示:

<input type="text" data-valrule="someregexstring" />

它的有效HTML5


我个人不会这么做。某些浏览器在解析HTML时忽略“不存在”属性,因此这些属性不会保存在浏览器页面DOM中。执行jQuery选择器时,它们可能找不到此属性

如果保证在兼容HTML5的浏览器中运行,则可以使用HTML5
data-
前缀作为属性,例如

<input type="text" data-valrule="someregexstring" />


但是,如果在较旧的浏览器中运行,这可能仍然不起作用。例如,事实证明,我们几乎一半的客户都在使用IE7,没有升级计划(以政府的速度前进)。

你绝对可以。尽管HTML5引入了所谓的数据属性,允许以标准方式为元素设置非标准属性

只需在属性名称前面加上
data-

<input type="text" data-valrule="someregexstring" />

虽然这是在HTML5中引入的,但您仍然可以在HTML4文档中使用它



使用jQuery(1.4.3+),可以通过或通过访问数据属性。

您应该使用前缀
data-
。HTML5支持它,其他浏览器将忽略它,您可以使用jQuery使用
.data()
方法轻松访问它

<input  id="myInput" type="text" data-MySuperMassiveAttribute="Awesome"/>

还有还不支持html5的浏览器?他们会忽略这个属性吗?会忽略它。。。关键是这对HTML5是有效的。是的,您可以简单地调用jquery data()函数来获取相应的值<代码>
var baz=$('div')。数据('foo')忽略是什么意思?我从未遇到过“不存在”属性的问题。。。数据-*在HTML中是有效的,我没有声明这一定会发生。我只是指出“不存在”属性的行为不适用于较旧的浏览器。@gdoron-“data-*在HTML@Alohci中是有效的。嗯……在所有现代浏览器中都是有效的(对我来说)。我不关心规范,只要它有效,就像
type=”一样javascript
可以删除…@gdoron我特别提到“旧浏览器”。但你说的是“现代浏览器”。按照你的标准,Firefox3.6被认为是“现代”的吗?它不能正确地支持它。
var howAmI = $('#myInput').data('MySuperMassiveAttribute');
alert(howAmI); // now everybody knows how awesome you are ;-)