我正在研究一些在DOM节点上使用自定义属性的代码。这些对于使用的特定逻辑是必需的。自定义属性在输入元素(如下拉列表和文本输入字段)上设置,格式为......
<input type="text" myCustomId="blah"...
这一切都适用于标准HTML输入。但是,我们希望使用一些Dijit小部件来代替标准输入,以实现特定的外观和感觉。 在onLoad上解析DOM并加载小部件(我们设置data-dojo-type来指定小部件)。 问题是Dojo / Dijit不保留自定义属性。他们在解析中迷路了。
是否可以指定Dijit小部件应该使用的自定义属性?
编辑:
下面是一些突出显示问题的示例HTML。 “自定义”属性正在丢失......
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://dojotoolkit.org/reference-guide/1.9/_static/js/dijit/themes/claro/claro.css">
<script>dojoConfig = {parseOnLoad: true}</script>
<script src="http://dojotoolkit.org/reference-guide/1.9/_static/js/dojo/dojo.js"> </script>
<script>require(["dojo/parser", "dijit/form/TextBox"]);</script>
</head>
<body class="claro">
<label for="firstname">Test: </label>
<input type="text" name="firstname" custom="test" value="testing testing"
data-dojo-type="dijit/form/TextBox"
data-dojo-props="trim:true, propercase:true" id="firstname" />
</body>
</html>
答案 0 :(得分:1)
我找到了基于这篇文章的解决方案......
http://dojotoolkit.org/features/1.6/html5data-attributes
基本上,如果我在自定义属性前添加“data-”,则dojo解析器会在窗口小部件中保留自定义属性。它不会将属性放在窗口小部件的最顶层节点上,但它足以让我们查找它
答案 1 :(得分:0)
尝试使用data-dojo-props='urCustomID=XXX'
,然后您可以get("urCustomID")
获取它。
答案 2 :(得分:0)
添加的自定义属性确实由小部件保留。但是,它们不区分大小写。根据您在问题中提供的示例,请尝试通过
访问它registry.byId('field_id').get('mycustomid')
或
dijit.byId('field_id').get('mycustomid')
让我举一个简单的例子: -
<script type='text/javascript'>
dojo.require("dijit.form.TextBox");
function func() {
alert(dijit.byId('namefld').get('customid'));
}
</script>
</head>
<body class="claro">
<input type="text" customId='mango' dojoType="dijit.form.TextBox" id="namefld" name="namefld"/>
<button onclick='func()'>click</button>
</body>