繁体   English   中英

如何根据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上创建上下文菜单,但是我想在未选中它时禁用上下文菜单,然后在选中它时再次对其进行打包。可以有人帮我..我的HTML页面是..

<div id="progmenu" >
        <input type="checkbox" /> click </div> 

dijit/Menu本身无法禁用,但是,可以使用disabled属性禁用每个dijit/MenuItem

因此,如果要禁用菜单,请使用dijit/Menu::getChildren()遍历所有菜单子级,然后设置属性。

要获取复选框的状态,请使用dojo/ondojo/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实用程序模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM