4

GetOrgChart の要素を更新しようとしていますが、そのために次のことを行っています

HTML

<form id="one">
    <input type="text" name="aaa">
    <input type="text" name="bbb">
    <input type="submit" name='submitform' value="submit">
</form>
<br> 
<div id="people"></div>

JavaScript

var oneForm = $("#one");
$("#people").getOrgChart({  
        clickEvent: function( sender, args ) {
            alert('args.id value outside validate '+args.id);

            oneForm.show();
            oneForm.validate({
                 // to add new area for team
                 rules: {
                     aaa: {
                         required: true,
                         minlength: 3
                     },
                     bbb: {
                         required: true,
                         minlength: 3
                     }
                 },
                 submitHandler: function (form) {
                     alert('args.id value inside validate '+args.id);
                     oneForm.hide();
                     return false;
                 }
             })

            //return false; //if you want to cancel the event
        },

         primaryColumns: ["Name", "Type"],
         linkType: "M",
         editable: false,
         zoomable: false,
         movable: true,
         gridView: true,

        dataSource: [
            { id: 1, parentId: -1, Name: "Amber McKenzie", Title: "CEO", Address: "MyAddress"},
            { id: 2, parentId: 1, Name: "Ava Field", Title: "CTO", Phone: "+359 888 888 888"},
            { id: 3, parentId: 1, Name: "Evie Johnson", Title: "CFO", Car: "BMW"}]
    });

チャート要素をクリックするだけでフォームを送信できます。

最初のクリック後に機能args.idが変化しない値validate

Jsフィドル

4

1 に答える 1

2

あなたの問題は、変数「args」のスコープのようです。

呼び出された無名関数で変数 "born" が発生し、clickEventそのイベント内にのみ存在します。

submitHandler別の内部関数によって管理されるハンドラーです。したがって、clickEvent の範囲外です。

したがって、解決策は宣言することです(両方の関数の外で、ページスコープを持つ変数を)。次に、クリック イベントで、それをidofに割り当てますargs。このようにして、送信イベント内でも使用できます。

要するに(「//---」行を追加してコメントしました):

var oneForm = $("#one");
var globalArgsId; //--- Declare "global" variable
$("#people").getOrgChart({  
        clickEvent: function( sender, args ) {
            alert('args.id value outside validate '+args.id);
            globalArgsId = args.id; //--- Write value to global variable

            oneForm.show();
            oneForm.validate({
                 // to add new area for team
                 rules: {
                     aaa: {
                         required: true,
                         minlength: 3
                     },
                     bbb: {
                         required: true,
                         minlength: 3
                     }
                 },
                 submitHandler: function (form) {
                     alert('args.id value inside validate '+args.id);
                     alert('args.id value inside validate '+globalArgsId); //--- Access to global variable
                     oneForm.hide();
                     return false;
                 }
             })

            //return false; //if you want to cancel the event
        },

         primaryColumns: ["Name", "Type"],
         linkType: "M",
         editable: false,
         zoomable: false,
         movable: true,
         gridView: true,

        dataSource: [
            { id: 1, parentId: -1, Name: "Amber McKenzie", Title: "CEO", Address: "MyAddress"},
            { id: 2, parentId: 1, Name: "Ava Field", Title: "CTO", Phone: "+359 888 888 888"},
            { id: 3, parentId: 1, Name: "Evie Johnson", Title: "CFO", Car: "BMW"}]
    });

それが役に立てば幸い... :)

于 2015-10-09T08:20:17.850 に答える