2017-04-11 71 views
0

我有一個簡單的aspx頁面,有一個按鈕和一個fancytree。Fancytree編輯擴展禁用aspx按鈕點擊

按鈕單擊事件在服務器端運行web方法以保存樹內容。 一切運行正常,我可以加載並保存在數據庫中的信息。

我的問題是當我在樹上使用編輯擴展。 Espacily當我按下Enter鍵保存節點的新標題時。回車鍵似乎禁用我的按鈕後點擊。有沒有人在aspx頁面上使用fancytree的編輯擴展?

我只是無法弄清楚爲什麼我的按鈕點擊不起作用後,我按回車確認新的節點標題。

謝謝。

下面是按鈕:

<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... 
+0

好吧,我剛剛發現點擊事件總是被點擊並且服務器端代碼也在運行。問題似乎是ajax調用的成功。即使有很好的返回值,成功的javascript警報也不會顯示,這可能是什麼原因? –

回答

0

我找到了答案。 Ajax代表異步。所以對服務器端webmethod的調用一直在運行。但成功的戒備並不是因爲我沒有等待迴應。我剛剛在ajax調用中添加了async:false,現在它正在工作。

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

太棒了!