当用户访问权限设置为"只读" 时,我们需要将所有表单输入元素设为readonly
。
我们在编码中使用基于小部件的模板方法,其中小部件在模板HTML中指定,并在相应的JS文件中使用。
我在JS postcreate
方法中尝试使用以下代码:
var item=dojo.query("#showtech_log_title_pane"); // id of the content pane
for (var i=0;i{
dijit.byId(item[i]).set('readOnly',true);
}
错误:dijit by id-> undefined或null
也
var container = dojo.query("#showtech_log_title_pane");
dojo.query('input', container).forEach(
function(inputElem){
inputElem.disabled = 'disabled';
}
)
错误:创建元素而不是方法
答案 0 :(得分:2)
要禁用窗口小部件,您必须获取对它的引用,并将其disabled属性设置为true。
在您的情况下,您必须遍历所有具有ID的输入(以确保创建的窗口小部件)然后获取输入的小部件并将其设置为禁用
下面是一个工作示例:
require([ "dojo/ready",
"dojo/query",
"dijit/registry",
"dojo/_base/array",
"dijit/TitlePane",
"dojo/domReady!"],
function (ready, query, registry, array, TitlePane) {
ready(function(){
//get all
var inputs = dojo.query('input', "enclosing_input_div");
array.forEach(inputs,function(input){
//check if a it's a created widget input (all widgets have theire own id )
if(input.id)
if(registry.byId(input.id)) // recheck if it it has enclosing widget
registry.byId(input.id).set("disabled",true)
})
});
});

<link href="https://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dijit/themes/claro/claro.css" rel="stylesheet"/>
<script>
dojoConfig= {
parseOnLoad: true,
async: true
};
</script>
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<body class="claro">
<div id="enclosing_input_div">
<div id="tp1" data-dojo-type="dijit/TitlePane" data-dojo-props="title: 'tp1'">
<table>
<tr>
<td>TextField :</td>
<td><input data-dojo-type="dijit/form/TextBox"></td>
</tr>
<tr>
<td>NumberTextBox :</td>
<td><input id="numberTextBox" data-dojo-type="dijit/form/NumberTextBox"></td>
</tr>
<tr>
<td>Checkbox :</td>
<td><input id="checkBox" data-dojo-type="dijit/form/CheckBox"></td>
</tr>
<tr>
<td>RadioButton :</td>
<td><input id="radioButton" data-dojo-type="dijit/form/RadioButton"></td>
</tr>
</table>
</div>
</div>
</body>
&#13;