我有一个现有的应用程序,它使用javascript和notNull,isDate等属性在html元素中的元素中定义,如input,select等
例如:
<input type = 'text' notNull class='mandatoryField' name = 'abc' id='abc' isDate/>
javascript使用hasProp方法检查属性,将代码放在下面并显示相应的警告消息:
function hasProp(thisField, thisProp) {
for ( var prop in thisField) {
if (prop == thisProp)
return true;
}
return false;
}
我的问题是使用不同的浏览器 - IE,Chrome和Firefox
此特定方法对于Internet Explorer都可以。当涉及到chrome和firefox时,notNull,isDate被视为属性而不是属性,上面的hasProp方法总是返回false。
我确实经历了很多问题,但是找不到任何方法可以单一方式访问属性和属性 - 我更喜欢使用jQuery,因为我们最终会迁移到jQuery。 / p>
任何对此的指示都会非常有用。
谢谢, 的Reema
答案 0 :(得分:0)
如果你想要一个jQuery解决方案,你可以使用jQuery.attr()和jQuery.prop()方法来解决你的问题。
答案 1 :(得分:0)
我更喜欢纯粹的Javascript方法:
var attributes = ['notNull', 'isDate'],
checkForAttribute = function(elem){
for(var i = 0, c = attributes.length ; i < c ; i++){
if(elem.getAttribute(attributes[i]) !== null){
console.log("attribute " + attributes[i] + " found");
}else{
console.log("attribute " + attributes[i] + " not found");
}
}
}
查看 working example here 。
答案 2 :(得分:0)
我认为你使用属性和属性的方式不是100%准确,jQuery上下文中的属性(.prop()
)基本上是值内存中的属性,其中.attr()
反映了标记中的值。这仅适用于“内置”的HTML属性。
所以在你的例子中,你一直在处理属性,只是有些没有任何价值。
检测属性存在的最佳方法,使用jQuery跨浏览器:
$('#myElement').is('[attrName]') === true
所以,在你的情况下:
$('#abc').is('[isDate]') === true