Fancytree编辑扩展禁用aspx按钮单击

时间:2017-04-11 18:44:08

标签: jquery asp.net javascript-events fancytree

我有一个简单的aspx页面,其中包含一个按钮和一个fancytree。

按钮单击事件在服务器端运行web方法以保存树内容。 一切运行正常,我可以在数据库中加载和保存信息。

我的问题是当我在树上使用编辑扩展时。当我按Enter键以保存节点的新标题时。回车键似乎禁用我的按钮点击后。有人在aspx页面上使用了fancytree的编辑扩展吗?

在按Enter确认新节点标题后,我无法弄清楚为什么单击按钮不起作用。

谢谢。

这是按钮:

<asp:Button ID="Button1" runat="server" Text="Save" OnClientClick="SaveTree()" />

这是javascript:

 //Save tree
    function SaveTree() {


        //Get information
        var actid = getUrlVars()["activityid"];
        var name = $("#<%= txtName.ClientID %>");
        var desc = $("#<%= txtDescription.ClientID %>");
        var plantid = $("#<%= ddlPlant.ClientID %>");



        if (Page_ClientValidate()) {
            var tree = $("#tree").fancytree("getTree");
            var d = tree.toDict(true);
            var test = JSON.stringify(d);
            $.ajax({
                type: "POST",
                url: "EditTree.aspx/SaveTree",
                data: "{treeData:'" + test + "',name:'" + name.val() + "',desc:'" + desc.val() + "',actid:'" + actid + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    alert(msg.d);
                    window.location = "Default.aspx?plantid=" + plantid.val();
                }
            });
        }

    }

这是树:

    $(function () {


        var me = getUrlVars()["activityid"];


        $("#tree").fancytree({

            ajax: { type: "GET", contentType: "application/json" },
            source: { url: "EditTree.aspx/GetTreeData", cache: false, data: { activityid: me } },

            activeVisible: true,
            autoActivate: true,
            autoScroll: true,
            keyboard: true,
            selectMode: 1,

            extensions: ["edit", "dnd"],

            edit: {
                adjustWidthOfs: 4,              // null: don't adjust input size to content
                inputCss: { minWidth: "3em" },
                triggerStart: ["f2"],           //l'édition se fait à partir de la touche F2
                beforeEdit: $.noop,             // Return false to prevent edit mode
                edit: $.noop,                   // Editor was opened (available as data.input)
                beforeClose: $.noop,            // Return false to prevent cancel/save (data.input is available)
                save: $.noop,                   // Save data.input.val() or return false to keep editor open
                close: $.noop,                  // Editor was removed
            } etc...

1 个答案:

答案 0 :(得分:0)

我找到了答案。 Ajax代表异步。因此,服务器端对web方法的调用始终在运行。但成功的警告并不是因为我没有等待回应。我刚刚在ajax调用中添加了 async:false ,现在它正在运行。

$.ajax({
    async: false,        
    success: function(data) {
       //alert...
    }
});

大!