js 实现微信可视化菜单json生成工具
2017-05-25 14:10
323 查看
好久没写博客了,
让生成微信菜单json变的简单些
今天简易实现一下微信可视化操作生成公众号菜单json功能
让生成微信菜单json变的简单些
今天简易实现一下微信可视化操作生成公众号菜单json功能
<meta charset="UTF-8"> <style type="text/css"> .c2menus{margin-left:80px;} .MENUBODY .c1menus:first-child .delc1menu-item{display: none;} .c2menus-item{height: 35px;} .MENUJSONFRM{white-space: pre-wrap;word-wrap: break-word;} input[type=button]{font-weight: bold;} </style> <link href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- ---------------------- --> <div class="MENUBODY"> <input type="button" class="add1 btn btn-primary btn-sm" onclick="WMENU.addmenu(this,1)" value="+" > </div> <input type="button" class="btn btn-success " onclick="WMENU.createmenujson();" value="CREATE MENU JSON" /> <input type="button" class="btn btn-success " onclick="WMENU.showmenujson(yjson);" value="LOAD MENU JSON" /> <div class="MENUJSONFRM"></div> <!-- ---------------------- --> <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript" src="./template.min.js"></script> <script id="menu1" type="text/html"> <div class="c1menus"> <div> <input class="btn btn-danger delc1menu-item btn-sm" type="button" onclick="WMENU.delmenu(this,1)" value="-" > 一级菜单 </div> <div class="c1info"> <span>菜单类型:</span> <select class="type" onchange="WMENU.changeselect(this,1)"> <option {{if !type}}selected{{/if}} value="1">弹出</option> <option {{if type=='view'}}selected{{/if}} value="view">连接</option> <option {{if type=='click'}}selected{{/if}} value="click">标示</option> </select> <span>名称:</span> <input class="name" value="{{name}}"> <span>标示:</span> <input class="key" value="{{key}}" {{if !key}}disabled{{/if}}> <span>链接:</span> <input class="url" value="{{url}}" {{if !url}}disabled{{/if}}> </div> <div> <div class="c2menus"> {{if !type}} {{include 'in_menu2'}} {{/if}} <input type="button" class="btn btn-info btn-sm" onclick="WMENU.addmenu(this,2)" value="+" 新增二级菜单> </div> </div> </div> </script> <script id="in_menu2" type="text/html"> {{each sub_button}} <div class="c2menus-item"> <input type="button" class="btn btn-danger btn-sm" onclick="WMENU.delmenu(this,2)" value="-"删除一级菜单> <span>菜单类型:</span> <select class="type" onchange="WMENU.changeselect(this,2)"> <option {{if $value.type=='view'}}selected{{/if}} value="view">连接</option> <option {{if $value.type=='click'}}selected{{/if}} value="click">标示</option> </select> <span>名称:</span> <input class="name" value="{{$value.name}}" > <span>标示:</span> <input class="key" value="{{$value.key}}" {{if !$value.key}}disabled{{/if}}> <span>链接:</span> <input class="url" value="{{$value.url}}" {{if !$value.url}}disabled{{/if}}> </div> {{/each}} </script> <script id="menu2" type="text/html"> <div class="c2menus-item"> <input type="button" class="btn btn-danger btn-sm" onclick="WMENU.delmenu(this,2)" value="-"删除一级菜单> <span>菜单类型:</span> <select class="type" onchange="WMENU.changeselect(this,2)"> <option value="view">连接</option> <option value="click">标示</option> </select> <span>名称:</span> <input class="name" > <span>标示:</span> <input class="key" disabled> <span>链接:</span> <input class="url" > </div> </script> <script> var yjson = { "menu": { "button": [ { "type": "click", "name": "今日歌曲", "key": "V1001_TODAY_MUSIC", "sub_button": [ ] }, { "type": "click", "name": "歌手简介", "key": "V1001_TODAY_SINGER", "sub_button": [ ] }, { "name": "菜单", "sub_button": [ { "type": "view", "name": "搜索", "url": "http://www.soso.com/", "sub_button": [ ] }, { "type": "view", "name": "视频", "url": "http://v.qq.com/", "sub_button": [ ] }, { "type": "click", "name": "赞一下我们", "key": "V1001_GOOD", "sub_button": [ ] } ] } ] } }; var WMENU={ addmenu:function(a,t){ if(t==1){ if($(".c1menus").length<=2){ $(a).before(template("menu1", {})); }else{ alert("一级菜单最多只能有3个"); } }else{ if($(a).parent().find(".c2menus-item").length<=4){ if($(a).parent().parent().parent().find('.type').val()==1){ $(a).before(template("menu2", {})); }else{ alert("一级菜单必须选择“弹出”类型才能添加二级菜单"); } }else{ alert("一级菜单最多只能有5个"); } } }, delmenu:function(a,t){ if(t==1){ $(a).parent().parent().remove(); }else{ $(a).parent().remove(); } }, changeselect:function(a,t){ $(a).parent().find(".url").val('').attr("disabled",false); $(a).parent().find(".key").val('').attr("disabled",false); if($(a).val()=="click"){ if(t==1) $(a).parent().parent().find(".c2menus-item").remove(); $(a).parent().find(".url").val('').attr("disabled","disabled"); }else if($(a).val()=="view"){ if(t==1) $(a).parent().parent().find(".c2menus-item").remove(); $(a).parent().find(".key").val('').attr("disabled","disabled"); }else{ $(a).parent().find(".url").val('').attr("disabled","disabled"); $(a).parent().find(".key").val('').attr("disabled","disabled"); } }, createmenujson:function(){ var menujson = {"menu":{"button":{}}}; var menui = 0; $('.MENUBODY .c1menus').each(function(){ var c1 = $(this).find(".c1info"); var json = {"sub_button":[]}; if(c1.find('.type').val()!=1) json.type = c1.find('.type').val(); if(c1.find('.name').val()) json.name = c1.find('.name').val(); if(c1.find('.key').val()) json.key = c1.find('.key').val(); if(c1.find('.url').val()) json.url = c1.find('.url').val(); if(json.type==undefined){ console.log($(this).get(0)); $(this).parent().parent().parent().find(".c2menus-item").each(function(){ var cjson={"sub_button":[]}; if($(this).find('.type').val()) cjson.type = $(this).find('.type').val(); if($(this).find('.name').val()) cjson.name = $(this).find('.name').val(); if($(this).find('.key').val()) cjson.key = $(this).find('.key').val(); if($(this).find('.url').val()) cjson.url = $(this).find('.url').val(); json.sub_button.push(cjson); }); } menujson.menu.button[menui]=json; menui++; }); console.log(menujson); $(".MENUJSONFRM").html(JSON.stringify(menujson, null, 4)); }, showmenujson:function(json){ var jmb = json.menu.button; $('.MENUBODY').html(''); for(var i in jmb){ $('.MENUBODY').append(template("menu1", jmb[i] )); } var addbtn = '<input type="button" class="add1 btn btn-primary btn-sm" onclick="WMENU.addmenu(this,1)" value="+" 增加一级菜单>'; $('.MENUBODY').html($('.MENUBODY').html()+addbtn); } } </script>
相关文章推荐
- Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单
- js按条件生成随机json:randomjson实现方法
- [原生js] 简单一招实现json数据可视化
- 在jsp中使用jstl,不使用JS,实现递归,生成N级菜单
- Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单
- Easyui实现datagrid绑定JS本地对象(可不请求URL,不生成JSON)
- 微信自定义菜单,php配置一个多维数组,通过json_encode()生成json字符串,中文会转为\uxxxx,微信报错!
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
- JS+CSS 菜单生成工具 E文的
- 使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)
- Java实现微信菜单json字符串拼接
- js 动态生成json 实现类似java map的动能
- js解析字符串转换成json对象 将字符串内容生成左侧菜单
- js实现菜单命令
- 用js实现网页上模仿桌面右键菜单
- 怎样才能用js生成xmldom对象,并且在firefox中也实现xml数据岛?
- js实现的XP风格的右键菜单
- JS实现浏览器菜单命令
- 用js实现的比较经典实用的触发型导航菜单
- [CSS代码]Div+Css(+Js)菜单代码及制作工具