| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | <!DOCTYPE html><HTML><HEAD>	<TITLE> ZTREE DEMO - beforeEditName / beforeRemove / onRemove / beforeRename / onRename</TITLE>	<meta http-equiv="content-type" content="text/html; charset=UTF-8">	<link rel="stylesheet" href="../../../css/demo.css" type="text/css">	<link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">	<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>	<script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>	<script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>	<script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>	<SCRIPT type="text/javascript">		<!--		var setting = {			view: {				addHoverDom: addHoverDom,				removeHoverDom: removeHoverDom,				selectedMulti: false			},			edit: {				enable: true,				editNameSelectAll: true,				showRemoveBtn: showRemoveBtn,				showRenameBtn: showRenameBtn			},			data: {				simpleData: {					enable: true				}			},			callback: {				beforeDrag: beforeDrag,				beforeEditName: beforeEditName,				beforeRemove: beforeRemove,				beforeRename: beforeRename,				onRemove: onRemove,				onRename: onRename			}		};		var zNodes =[			{ id:1, pId:0, name:"parent node 1", open:true},			{ id:11, pId:1, name:"leaf node 1-1"},			{ id:12, pId:1, name:"leaf node 1-2"},			{ id:13, pId:1, name:"leaf node 1-3"},			{ id:2, pId:0, name:"parent node 2", open:true},			{ id:21, pId:2, name:"leaf node 2-1"},			{ id:22, pId:2, name:"leaf node 2-2"},			{ id:23, pId:2, name:"leaf node 2-3"},			{ id:3, pId:0, name:"parent node 3", open:true },			{ id:31, pId:3, name:"leaf node 3-1"},			{ id:32, pId:3, name:"leaf node 3-2"},			{ id:33, pId:3, name:"leaf node 3-3"}		];		var log, className = "dark";		function beforeDrag(treeId, treeNodes) {			return false;		}		function beforeEditName(treeId, treeNode) {			className = (className === "dark" ? "":"dark");			showLog("[ "+getTime()+" beforeEditName ]     " + treeNode.name);			var zTree = $.fn.zTree.getZTreeObj("treeDemo");			zTree.selectNode(treeNode);			setTimeout(function() {				if (confirm("Start node '" + treeNode.name + "' editorial status?")) {					setTimeout(function() {						zTree.editName(treeNode);					}, 0);				}			}, 0);			return false;		}		function beforeRemove(treeId, treeNode) {			className = (className === "dark" ? "":"dark");			showLog("[ "+getTime()+" beforeRemove ]     " + treeNode.name);			var zTree = $.fn.zTree.getZTreeObj("treeDemo");			zTree.selectNode(treeNode);			return confirm("Confirm delete node '" + treeNode.name + "' it?");		}		function onRemove(e, treeId, treeNode) {			showLog("[ "+getTime()+" onRemove ]     " + treeNode.name);		}		function beforeRename(treeId, treeNode, newName, isCancel) {			className = (className === "dark" ? "":"dark");			showLog((isCancel ? "<span style='color:red'>":"") + "[ "+getTime()+" beforeRename ]     " + treeNode.name + (isCancel ? "</span>":""));			if (newName.length == 0) {				setTimeout(function() {					var zTree = $.fn.zTree.getZTreeObj("treeDemo");					zTree.cancelEditName();					alert("Node name can not be empty.");				}, 0);				return false;			}			return true;		}		function onRename(e, treeId, treeNode, isCancel) {			showLog((isCancel ? "<span style='color:red'>":"") + "[ "+getTime()+" onRename ]     " + treeNode.name + (isCancel ? "</span>":""));		}		function showRemoveBtn(treeId, treeNode) {			return !treeNode.isFirstNode;		}		function showRenameBtn(treeId, treeNode) {			return !treeNode.isLastNode;		}		function showLog(str) {			if (!log) log = $("#log");			log.append("<li class='"+className+"'>"+str+"</li>");			if(log.children("li").length > 8) {				log.get(0).removeChild(log.children("li")[0]);			}		}		function getTime() {			var now= new Date(),			h=now.getHours(),			m=now.getMinutes(),			s=now.getSeconds(),			ms=now.getMilliseconds();			return (h+":"+m+":"+s+ " " +ms);		}		var newCount = 1;		function addHoverDom(treeId, treeNode) {			var sObj = $("#" + treeNode.tId + "_span");			if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;			var addStr = "<span class='button add' id='addBtn_" + treeNode.tId				+ "' title='add node' onfocus='this.blur();'></span>";			sObj.after(addStr);			var btn = $("#addBtn_"+treeNode.tId);			if (btn) btn.bind("click", function(){				var zTree = $.fn.zTree.getZTreeObj("treeDemo");				zTree.addNodes(treeNode, {id:(100 + newCount), pId:treeNode.id, name:"new node" + (newCount++)});				return false;			});		};		function removeHoverDom(treeId, treeNode) {			$("#addBtn_"+treeNode.tId).unbind().remove();		};		function selectAll() {			var zTree = $.fn.zTree.getZTreeObj("treeDemo");			zTree.setting.edit.editNameSelectAll =  $("#selectAll").attr("checked");		}				$(document).ready(function(){			$.fn.zTree.init($("#treeDemo"), setting, zNodes);			$("#selectAll").bind("click", selectAll);		});		//-->	</SCRIPT>	<style type="text/css">.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}	</style></HEAD><BODY><h1>Advanced Edit Nodes</h1><h6>[ File Path: exedit/edit_super.html ]</h6><div class="content_wrap">	<div class="zTreeDemoBackground left">		<ul id="treeDemo" class="ztree"></ul>	</div>	<div class="right">		<ul class="info">			<li class="title"><h2>1, 'beforeDrag / onDrag'<br/>  'beforeEditName'<br/>  'beforeRemove / onRemove'<br/>  'beforeRename / onRename' callback function</h2>				<ul class="list">				<li>This demo shows the use of custom controls, the callback function to enhance the user experience, the operation can be compared with "Basic Edit Nodes" example.</li>				<li>This demo achieve the Add nodes button.</li>				<li>This demo achieve the confirmation when deleting node.</li>				<li>This demo use the 'showRenameBtn' to hide the rename button, when the treeNode's isLastNode = true</li>				<li>This demo use the 'showRemoveBtn' to hide the delete button, when the treeNode's isFirstNode = true</li>				<li class="highlight_red">Can use 'beforeEditName' callback trigger custom editing.</li>				<li><p><span class="highlight_red">After be familiar with these configurations, I think you can design a more flexible and rational rules!</span><br/>					    <input type="checkbox" id="selectAll" checked /> Whether select all text, when edit node's name.<br/>					remove / rename log:  <span style="color:red">RED</span> is cancel edit (v3.5.13+)<br/>					<ul id="log" class="log"></ul></p>				</li>				</ul>			</li>			<li class="title"><h2>2, Explanation of setting</h2>				<ul class="list">				<li>Same as 'Basic Edit Nodes'</li>				</ul>			</li>			<li class="title"><h2>3, Explanation of treeNode</h2>				<ul class="list">				<li>Same as 'Basic Edit Nodes'</li>				</ul>			</li>		</ul>	</div></div></BODY></HTML>
 |