当前位置:  开发笔记 > 前端 > 正文

Dojo禁用div容器中的所有输入字段

如何解决《Dojo禁用div容器中的所有输入字段》经验,为你挑选了3个好方法。

有没有办法禁用dojo的div容器中的所有输入字段?

就像是:

dijit.byId('main').disable -> Input

Eugene Lazut.. 11

这就是我这样做的方式:

dojo.query("input, button, textarea, select", container).attr("disabled", true);

此单行禁用给定容器中的所有表单元素.



1> Eugene Lazut..:

这就是我这样做的方式:

dojo.query("input, button, textarea, select", container).attr("disabled", true);

此单行禁用给定容器中的所有表单元素.



2> Maine..:

当然有.例如,打开此表单测试页面,启动FireBug并在控制台中执行:

var container = dojo.query('div')[13];
console.log(container);
dojo.query('input', container).forEach(
  function(inputElem){
    console.log(inputElem);
    inputElem.disabled = 'disabled';
  }
)

笔记:

在该测试页面上,表单元素实际上是dijit表单小部件,但在此示例中,我将它们视为正常输入标记

第二个dojo.query选择元素中的所有输入元素container.如果容器有一些唯一的id,你可以通过只有一个dojo.query简化样本:dojo.query('#containerId input').forEach( ...

forEach循环遍历所有找到的输入元素,并对它们应用给定的函数.

更新:使用NodeList的attr函数而不是设置属性值的快捷方式forEach.attr首先获取属性名称,然后获取值或具有名称/值对的对象:

var container = dojo.query('div')[13];
dojo.query('input', container).attr('disabled', 'disabled');



3> 小智..:

要记住的是A Dijit和常规DomNode之间的区别.如果你想在DomNode中使用所有Dijit,你可以从节点转换它们 - > Dijit refs查询没有问题:

// find all widget-dom-nodes in a div, convert them to dijit reference:
var widgets = dojo.query("[widgetId]", someDiv).map(dijit.byNode);
// now iterate over that array making each disabled in dijit-land:
dojo.forEach(widgets, function(w){ w.attr("disabled", "disabled"); }

这真的只是取决于如果你的输入是常规的DOM输入标签或已转化成丰富的Dijit模板(这都做在其中常规输入,只是通过小部件参考控制代替)

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有