2013-07-08 157 views
0

我已经在Grails中构建了一个表单。我已使用动态创建Html <input>标记的g:submitToRemote按钮。我想对其应用dojo样式,就像我的表单中的所有其他元素一样,但这种样式不适用。你能帮我解决问题吗?CSS dojo样式不适用于按钮

<input onclick="createLoader(); dojoType="dijit.form.Button" try{//some Ajax calls};return false" type="button" value="Search"> 

回答

1

有你需要检查几件事情:

  1. 确定按钮被解析?查看HTML源代码并验证按钮的HTML代码是否仍与您提供的代码相同。当Dojo解析HTML代码时,它通常会将HTML代码更改为更复杂的代码。如果你没有那么复杂的代码,你的小部件不会被Dojo拾取。
  2. 你输入了正确的CSS文件吗?您需要确保您导入了正确的CSS文件,例如claro.css
  3. 是否有任何父元素具有主题类名称?如果您使用claro主题(例如),则需要确保您的类名claro处于某个地方,通常位于您的body标签中。

编辑: 更多的事情来检查:

你有你的require()dijit/form/Button?假设你正在使用的Dojo 1.6(因为你正在使用的旧dojoType),你需要的代码是:

dojo.require("dijit.form.Button"); 

是您的按钮加载异步或不?如果它是异步加载的,则在加载页面时不会分析您的节点。这意味着你必须通过在<div>包装您的按钮手动异步并手动解析DIV,例如:

<div id="toParse"> 
    <input onclick="createLoader(); dojoType="dijit.form.Button" try{//some Ajax calls};return false" type="button" value="Search"> 
</div> 

而且在JavaScript:

dojo.parser.parse("toParse"); 
+0

1.我的代码不会被解析。没有任何Dojo代码存在。 2. Claro.css在那里。所有其他组件正在工作。 – Jacob

+0

然后你必须找到你的Dojo代码没有被编译的原因。 'require()'块中的'dijit/form/Button'?我对Grails不是很熟悉,但加载的内容是异步的? – g00glen00b

+0

这是礼物:dojo.require('dijit.form.Button'); – Jacob