jueyue 发表于 2013-11-24 23:10:52

jeecg formvalid 的回调以及刷新

form 基本上是大家最常用,而且add是使用的最多
要看这个就要查看生成的js是什么样子的
$(function() {
    $("#formobj").Validform({tiptype: 4,btnSubmit: "#btn_sub",btnReset: "#btn_reset",ajaxPost: true,usePlugin: {passwordstrength: {minLen: 6,maxLen: 18,trigger: function(obj, error) {
                  if (error) {
                        obj.parent().next().find(".Validform_checktip").show();
                        obj.find(".passwordStrength").hide();
                  } else {
                        $(".passwordStrength").show();
                        obj.parent().next().find(".Validform_checktip").hide();
                  }
                }}},callback: function(data) {
            var win = frameElement.api.opener;
            if (data.success == true) {
                frameElement.api.close();
                win.tip(data.msg);
            } else {
                if (data.responseText == '' || data.responseText == undefined) {
                  $.messager.alert('错误', data.msg);
                } else {
                  try {
                        var emsg = data.responseText.substring(data.responseText.indexOf('错误描述'), data.responseText.indexOf('错误信息'));
                        $.messager.alert('错误', emsg);
                  } catch (ex) {
                        $.messager.alert('错误', data.responseText + "");
                  }
                }
                return false;
            }
            win.reloadTable();
      }});
});

这个是生成的代码,当如果你修改了代码生成器参数之后就不是这样的了,例如我们需要自己的回调函数
$(function() {
    $("#formobj").Validform({tiptype: 4,btnSubmit: "#btn_sub",btnReset: "#btn_reset",ajaxPost: true,callback: function(data) {
            test(data);
      }});
});

这样回调是自己的,所以比较简单
首先我们看看btnSubmit 这个也就是提交函数,在Validform如何提交的
jeecg中有开发版大家可以看看,我们把这段拿出来

settings.btnSubmit && $this.find(settings.btnSubmit).bind("click",function(){
    $this.trigger("submit");
    return false;
   });

可以发现绑定的click事件,但是真实触发的大家比较常见的submit事件,但是Validform使用了自己的submit
然后使用ajax提交了表单,这里才有了回调


1.回调
callback 基本都是dialog 这种方式
想使用自己回调,看下源码就知道http://note.youdao.com/yws/public/resource/9de4d60b5b9e3c2c8f9cd8a25e44758f/B5BBF87F7F5748FF9A7BB1CDB42E4D8C


要像java一样使用@Override 这种(这个确实有点.......出人意料)多看看源码还是好的
但是从上面生成代码我们就可以看出,默认的回调函数处理了不少东西
var win = frameElement.api.opener;//获取父窗口

然后关闭,然后刷新主表单
win.reloadTable();

如果我们自己的回调,记得也进行处理哈


2.刷新表单
刷新表单确实属于疑难杂症啊
reloadTable 其实还是调用的$("#id").datagrid('reload');
但是因为经常id获取不到或者其他原因照成刷新不成功
如果实在解决不了,就自己使用回调,然后刷新


页: [1]
查看完整版本: jeecg formvalid 的回调以及刷新