如何根据 dojo dijit 中的复选框条件启用和禁用上下文菜单?
how to enable and disable the context menu based on checkbox condition in dojo dijit?
function(Menu, MenuItem){
var pMenu = null;
pMenu = new Menu({
targetNodeIds: ["progmenu"]
});
pMenu.addChild(new MenuItem({
label: "Simple menu item",
onClick: function(){
pMenu.destroy();
}
}));
这会在 div 上创建上下文菜单,但我想在未选中时禁用上下文菜单,并在 checked.can 有人帮助我时再次启用它..
我的 html 页面是..
<div id="progmenu" >
<input type="checkbox" /> click </div>
dijit/Menu
本身是没有办法被禁用的,但是,每个dijit/MenuItem
都可以通过disabled
属性.
来禁用
因此,如果您想禁用菜单,请使用 dijit/Menu::getChildren()
遍历所有子菜单,然后设置 属性。
要获取复选框的状态,您可以使用 dojo/on
或 dojo/query
向其添加一个 onChange
事件处理程序,并且使用 event.target.checked
您可以检查是否是否检查过。
例如:
query("#progmenu input[type=checkbox]").on("change", function(evt) { // On change
pMenu.getChildren().forEach(function(child) { // Loop over children
child.set('disabled', evt.target.checked); // Set disabled state
});
});
可以在 JSFiddle 上找到演示:http://jsfiddle.net/659t7dfj/
注意事项,我正在使用 Array.prototype.forEach()
来遍历菜单项。如果您需要支持旧版浏览器,则必须切换到常规循环或使用 dojo/_base/array
实用程序模块。
function(Menu, MenuItem){
var pMenu = null;
pMenu = new Menu({
targetNodeIds: ["progmenu"]
});
pMenu.addChild(new MenuItem({
label: "Simple menu item",
onClick: function(){
pMenu.destroy();
}
}));
这会在 div 上创建上下文菜单,但我想在未选中时禁用上下文菜单,并在 checked.can 有人帮助我时再次启用它.. 我的 html 页面是..
<div id="progmenu" >
<input type="checkbox" /> click </div>
dijit/Menu
本身是没有办法被禁用的,但是,每个dijit/MenuItem
都可以通过disabled
属性.
因此,如果您想禁用菜单,请使用 dijit/Menu::getChildren()
遍历所有子菜单,然后设置 属性。
要获取复选框的状态,您可以使用 dojo/on
或 dojo/query
向其添加一个 onChange
事件处理程序,并且使用 event.target.checked
您可以检查是否是否检查过。
例如:
query("#progmenu input[type=checkbox]").on("change", function(evt) { // On change
pMenu.getChildren().forEach(function(child) { // Loop over children
child.set('disabled', evt.target.checked); // Set disabled state
});
});
可以在 JSFiddle 上找到演示:http://jsfiddle.net/659t7dfj/
注意事项,我正在使用 Array.prototype.forEach()
来遍历菜单项。如果您需要支持旧版浏览器,则必须切换到常规循环或使用 dojo/_base/array
实用程序模块。