javascript - GetOrgChart 值未在 jquery 验证器中更新

标签 javascript jquery html jquery-validate getorgchart

我正在尝试更新 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 函数而改变

JsFiddle

最佳答案

您的问题似乎是变量“args”的范围。

它在 clickEvent 上调用的匿名函数中“出生”变量,并且它仅存在于该事件中。

submitHandler 是由另一个内部函数管理的处理程序;所以它在 clickEvent 的范围之外。

所以解决方案是声明(在两个函数之外都有一个具有页面范围的变量)。 然后,在点击事件上,为其分配 argsid。 通过这种方式,您也可以在提交事件中使用它。

简而言之(我用添加的“//---”行评论):

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"}]
    });

希望对您有所帮助...:)

关于javascript - GetOrgChart 值未在 jquery 验证器中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33032886/

相关文章:

javascript - 引用错误: jsonp not defined

javascript - zurb foundation 5.4 joyride - 控制揭盖

javascript - 获取特定行的属性值?

javascript - 为什么选择器末尾和结束引号之间需要有一个空格?

javascript - 如何使用 JavaScript 搜索 HTML 表格中的单元格?

内容的 HTML 5 元素?

javascript - 从单选按钮 Angular Material 对话框中获取值

JavaScript 对象在创建时变得疯狂?

javascript - 局部变量和私有(private)变量的关系

php - 使用 JS 和 PHP (MySQL) 实时检查用户名的安全性