jQuery MiniUI

标题: 弹出窗体问题 [打印本页]

作者: lvdiquan    时间: 2013-8-15 14:56:23     标题: 弹出窗体问题

请问我做的一个添加按钮,第一次添加的时候能获得表达的值,把窗体关了之后,再打开,在js文件中获取不到表单的值,请问是怎么回事?
具体代码如下:
//显示添加员工窗口
mingXi.ShowAddEmloyWin = function (ID) {
    var addWin = mini.get('optaddEmployInfowin' + ID);
    addWin.show("center", "middle");
    var addForm = new mini.Form("#addEmployInfo"+ID);
    addForm.clear();
    //初始化部门和性别
    mingXi.sexComboxInit(ID);
}

//取消员工添加窗体
mingXi.cancelAddEmploy = function (ID) {
    var addWin = mini.get('optaddEmployInfowin' + ID);
    addWin.hide();
}

//添加员工
mingXi.Add = function (ID) {
    var addForm = new mini.Form("#addEmployInfo" + ID);
    //验证数据
    addForm.validate();
    if (addForm.isValid() == false) return;
    //获取表单数据
    var data = addForm.getData();
    if (data.depID == -1) {
        mini.alert("请选择所在的部门");
        return;
    }
    //将时间进行格式化
    var createDateFormat = mini.formatDate(data.employCreateDate, "yyyy-MM-dd");
    data.employCreateDate = createDateFormat;
    debugger;
    data.depID = ID;
    var grid = mini.get('optEmploygrid' + ID);
    //加载遮罩
    addForm.loading();
    $.ajax({
        url: "/EmployInfo/AddEmploy",
        type: "post",
        data: data,
        success: function (data) {
            if (data.Result == "ok") {
                grid.reload();
                mini.alert("添加成功!", "用户管理");
                mingXi.cancelAddEmploy(ID);
            }
            else {
                mini.alert("添加失败", "用户管理");
            }
        },
        error: function (XMLHttpRequest, textStatus) {
            mini.alert("添加用户失败!服务器出错了!", "用户管理");
        },
        complete: function () {
            grid.reload();
            //取消遮罩
            addForm.unmask();
        }
    });
}


作者: factory    时间: 2013-8-15 15:22:43

我建议你还是逐步调试看吧
是不是你的ShowAddEmloyWin()的时候addForm.clear();把表单清空了?
作者: lvdiquan    时间: 2013-8-15 15:29:32

factory 发表于 2013-8-15 15:22
我建议你还是逐步调试看吧
是不是你的ShowAddEmloyWin()的时候addForm.clear();把表单清空了? ...

弹出窗体的时候清空,我填写完数据的时候,是执行mingXi.Add(),按理说是能获取值才对呀!!!
作者: factory    时间: 2013-8-15 15:57:27

lvdiquan 发表于 2013-8-15 15:29
弹出窗体的时候清空,我填写完数据的时候,是执行mingXi.Add(),按理说是能获取值才对呀!!! ...

那你逐步调试看
作者: lvdiquan    时间: 2013-8-15 16:00:18

factory 发表于 2013-8-15 15:57
那你逐步调试看

调试了,把 var addForm = new mini.Form("#addEmployInfo"+ID);放到函数外面,就没这个问题了,但是不知道是什么原理,求解释!!
作者: langben    时间: 2013-8-15 16:01:05

问题出现在你们的框架上
建议你将表单变量设置为window全局变量

var addForm = new mini.Form("#addEmployInfo"+ID);
function f(){
    //使用你的addForm;
}

作者: lvdiquan    时间: 2013-8-15 16:03:29

langben 发表于 2013-8-15 16:01
问题出现在你们的框架上
建议你将表单变量设置为window全局变量

这样设置是对的,但是想知道是什么原理,能解释一下嘛???
作者: factory    时间: 2013-8-15 16:07:01

lvdiquan 发表于 2013-8-15 15:29
弹出窗体的时候清空,我填写完数据的时候,是执行mingXi.Add(),按理说是能获取值才对呀!!! ...

你做个html页面,能重现问题,然后帮你看下是什么原因
作者: langben    时间: 2013-8-15 16:28:53

猜测
就是你们框架使用一个界面
没有使用iframe嵌套
表单生成实例变量的时候生成到了主界面
主界面是针对window级别的
当你方法在new 一个表单变量的时候针对的是方法域级别的
所以找不到
建议你使用iframe嵌套访问你的界面就不用全局设置form变量了。
作者: niko    时间: 2013-8-16 09:18:53

复杂的场景,你提供下html示例,能重现问题,这样好好处理了。




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2