0

我正在处理一些在 DOM 节点上使用自定义属性的代码。这些对于使用的特定逻辑是必需的。自定义属性在输入元素(例如下拉菜单和文本输入字段)上设置,格式为...

<input type="text" myCustomId="blah"...

这一切都适用于标准 HTML 输入。但是,我们希望使用一些 Dijit 小部件来代替标准输入来实现特定的外观和感觉。在加载时解析 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>
4

3 回答 3

1

我根据这篇文章找到了一个解决方案......

http://dojotoolkit.org/features/1.6/html5data-attributes

本质上,如果我在自定义属性前添加“data-”,dojo 解析器会保留小部件中的自定义属性。它不会将属性放在小部件的最顶部节点上,但它足以让我们查找它

于 2013-08-28T11:09:00.127 回答
0

尝试使用data-dojo-props='urCustomID=XXX',然后您可以获得它get("urCustomID")

于 2013-08-26T16:06:31.973 回答
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>
于 2013-08-26T19:28:41.743 回答