2011-08-23 109 views
0

如果条件检查在dojo中,你会如何编码?
HTML属性比较

if(!dojo.query("#idOfHhtmlField").attr("disabled") == true) 
    { 
     //do something 
    } 

在这里,我想如果#idOfHhtmlField的disabled属性设置为true或没有比较,但它似乎没有为我工作。

+1

如果你想在JavaScript中测试这个值,而不引起类型强制,你需要使用'==='triple equals。 – rxgx

回答

0

我在道场测试这个网站,here

<button id="test0" disabled>button0</button> 
<button id="test1" disabled="disabled">button1</button> 
<button id="test2" disabled="false">button2</button> 
<div id="test3" disabled>div0</div> 
<div id="test4" disabled="disabled">div1</div> 
<div id="test5" disabled="false">div2</div> 

,因为你可以设置div的残疾人在IE8,所以它返回所有真。 但在铬中只有按钮返回true。 您应该检查#idOfHhtmlField是否为表单元素。

更新

我建议你禁用检测这种方式,因为浏览器不需要它的价值:

if(dojo.hasAttr("id",'disabled')){ 
     //alert(123) 
} 

我知之甚少道场,因为dojo.query()ATTR()返回。对象,它是被玷污的! 和here是官方指南。

+0

嗨西蒙,我的浏览器是IE8,这个输入字段的类型是Dojo类型。 – t0mcat

+0

西蒙,你建议的第二种方法是抛出此错误:'getAttributeNode'为空或不是对象 – t0mcat

+0

西蒙,由于某种原因dojo.hasAttr不适用于禁用属性。这里已经指出Link。 dojo.attr(节点,“禁用”)工作。 – t0mcat

0
if(!dojo.query("#idOfHhtmlField").disabled) { 
    ... 
} 
+0

嗨德兰,这一个也没有工作。我的流量仍在进入状态。 – t0mcat

0

idOfHhtmlField DOM元素(div,span,input等)?或者它是一个dijit小部件?

如果是DOM节点,您可能需要使用:

var field = dojo.byId('idOfHtmlField'); 
console.log(field.disabled); 

如果您正在使用某种类型的dijit的小部件(无论是编程实例或声明通过的dojoType或数据道场型)你会想要使用:

var fieldWidget = dijit.byId('idOfHtmlField'); 
var isDisabled = fieldWidget.get('disabled'); 
console.log(isDisabled);