2017-04-11 8 views
0

私はボタンとファンシーツリーを持つ単純なaspxページを持っています。Fancytree編集拡張無効aspxボタンをクリック

ボタンクリックイベントは、サーバー側でWebメソッドを実行してツリーの内容を保存します。 すべてが正常に実行され、データベースに情報をロードして保存できます。

私の問題は、ツリー上で編集エクステンションを使用するときです。私がEnterキーを押してノードの新しいタイトルを保存すると、特にそうです。 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... 
+0

私はちょうどclickイベントが常にヒットし、サーバー側のコードも実行されていることを知りました。問題は、ajax呼び出しの成功にあるようです。良い戻り値があっても、成功のjavascript警告が表示されない理由は何ですか? –

答えて

0

私は答えを見つけました。 Ajaxは非同期の略です。したがって、サーバー側のWebメソッドへの呼び出しは常に実行されていました。しかし、成功の警告は、私がその応答を待っていなかったからではありませんでした。私はちょうどasyncを追加しました:偽はajaxコールで今は動作しています。

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

素晴らしい!

関連する問題