【问题标题】:jstree validate renaming of node, and if not validated , roll back to old namejstree 验证节点重命名,如果没有验证,则回滚到旧名称
【发布时间】:2012-02-08 21:54:32
【问题描述】:
在 jstree 中重命名节点时,我想验证重命名中的特殊字符,如果发现,我想提醒用户,并回滚到旧名称。
为此我添加了
- 重命名上下文菜单
- 之后我确实绑定了 node_rename 和 rename 事件
- 在绑定中我检查 event.type === node_rename
- 当我在 data.args[1] 中获得新名称时,我能够验证新名称的特殊字符
- 但是在我的警报到来之前,重命名已经发生了,我找不到撤消它的方法。
感谢任何帮助。
【问题讨论】:
标签:
javascript
validation
contextmenu
rename
jstree
【解决方案1】:
我需要绑定rename.jstree,而不是绑定rename_node,然后需要使用回滚操作。
这里是绑定事件代码。
if(type === 'rename')
{
var new_Name = data.rslt.new_name;
var iChars = "!@#$%^&*()+=[]\\\';,/{}.-_|\":<>?";
for (var i = 0; i < new_Name.length; i++)
{
if (iChars.indexOf(new_Name.charAt(i)) != -1)
{
alert ("Special characters are not allowed.");
$.jstree.rollback(data.rlbk);
}
}
}
【解决方案2】:
您也可以通过rename_node 进行操作。如果验证失败调用:
$('#yourtreeid').jstree("refresh");