Ext中window中常见问题

operateEdit = function() {
 this.name = new Ext.form.TextField({
    id : "name",
    columnWidth : 0.5,
    minWidth : 75,
    fieldLabel : '账号',
    text : '账号',
    style : 'height:19px;',
    anchor : '90%',
    allowBlank : false,
    blankText : '账号不能为空!',
    scope : this,
    listeners : {
     "change" : function() {
      Ext.Ajax.request({
         url : "user_checkName.action",
         params : {
          "name" : Ext.getCmp("name").getValue()
         },
         success : function(response, action) {
          var result = Ext
            .decode(response.responseText);
          if (result.success == false) {
           Ext.Msg.alert("提示", "此用户名已经存在!");
          }
         },
         failer : function(request, action) {
          Ext.Msg.alert("提示", "出现错误!")
         }
        })
     }
    }
   });
 this.realName = new Ext.form.TextField({
    id : 'realName',
    columnWidth : 0.5,
    minWidth : 75,
    fieldLabel : '姓名',
    text : '姓名',
    style : 'height:19px;',
    anchor : '90%',
    scope : this
   });
 this.pwd = new Ext.form.TextField({
    id : 'loginPassword',
    inputType : "password",
    columnWidth : 0.5,
    minWidth : 75,
    fieldLabel : '密码',
    text : '密码',
    style : 'height:19px;',
    anchor : '90%',
    allowBlank : false,
    blankText : '密码不能为空!',
    scope : this,
    listeners : {
     "change" : function() {
      Ext.getCmp("repass").show();
      Ext.getCmp("rePwd").allowBlank=false;
      Ext.getCmp("rePwd").blankText="确认密码不能为空!";
     }
    }

   });

 this.telephone = new Ext.form.TextField({
    id : 'mobile',
    columnWidth : 0.5,
    minWidth : 75,
    fieldLabel : '手机',
    text : '手机',
    style : 'height:19px;',
    anchor : '90%',
    scope : this,
    regex : /(^[0-9]*$)/,// 使用正则表达式进行验证
    regexText : "手机号码只能是数字!"
   });
 this.email = new Ext.form.TextField({
    id : 'email1',
    columnWidth : 0.5,
    minWidth : 75,
    fieldLabel : '邮件',
    text : '邮件',
    style : 'height:19px;',
    anchor : '90%',
    scope : this,
    regex : /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,//进行验证
    regexText : "邮箱格式不正确!"// 错误提示信息,默认值我就不说了

   });
 this.remark = new Ext.form.TextArea({
    id : 'memo',
    columnWidth : 1,
    minWidth : 75,
    fieldLabel : '备注',
    text : '备注',
    anchor : '95%',
    scope : this
   });
 this.id = new Ext.form.TextField({
    id : "id",
    hideLabel: true,
    hidden : true,
    style : 'display:none;',
    value : id
   });
 // 两次输入的密码是否一致
 Ext.apply(Ext.form.VTypes,{
    password : function(val, field) {
     if (field.confirmTo) {
      var pwd = Ext.get(field.confirmTo);
      return (val == pwd.getValue());
     }
     return true
    }

   });
 this.submit = new Ext.Button({
    text : '保存',
    scope : this,
    handler : function() {
     if (formEditPanel.form.isValid()) {
      // 获取表单对象
      var submitForm = formEditPanel.getForm();
      submitForm.doAction('submit', {
         url : 'user_AM.action',
         method : 'POST',
         params : submitForm.getValues(),// 获取表单数据</SPAN>
         success : function(form, action) {
          var isSuc = action.result.success;
          if (isSuc) {
           // 提示用户登陆成功
              Ext.getCmp("userGrid").store
                .reload();
          }
         },
         failure : function(form, action) {
          Ext.Msg.alert("提示", action.result.msg);
         }
        });
      editWin.close();
     }

    }
   });
 this.exit = new Ext.Button({
    text : '取消',
    scope : this,
    handler : function() {
     editWin.close();
    }

   });
 // 定义一个编辑的formPanel
 var formEditPanel = new Ext.FormPanel({
  id : "editFormPanel",
  frame : true,
  plain : true,
  labelWidth : 60,
  defaults : // 容器中组件默认统一配置选项
  {
   allowBlank : false
  },
  items : [{
     layout : 'column',
     border : false,
     items : [{
        columnWidth : .50,
        layout : 'form',
        border : false,
        items : [this.name, this.pwd, this.telephone]
       },

       {
        columnWidth : .50,
        layout : 'form',
        border : false,
        items : [this.realName, {

           xtype : 'fieldset',
           style : ' margin-bottom:0px;padding:0px;',
           border : false,
           id : 'repass',
           hidden : true,
           items : [{
              xtype:"textfield",
              id : 'rePwd',
              inputType : "password",
              columnWidth : 0.5,
              minWidth : 75,
              fieldLabel : '确认密码',
              style : 'height:19px;',
              anchor : '90%',
              confirmTo : "loginPassword",
              vtype : "password",
              vtypeText : "两次密码不一致,请重新输入!"

             }]
          }, this.email]
       }, {
        columnWidth : 1,
        layout : 'form',
        border : false,
        items : [this.remark, this.id]
       }

     ]
    }]
 });
 // 定义一个编辑的window
 var editWin = new Ext.Window({
    id : "editWin",
    title : "编辑账号",
    width : 600,
    modal : true,
    closeAction : 'close',
    autoHeight : true,
    border : false,
    resizable : false,
    buttonAlign : 'center',
    plain : true,
    items : [formEditPanel],
    buttons : [this.submit, this.exit]
   });
 this.showEditWin = function() {
  if (loadData()) {
   editWin.show();
  }
 }
 function loadData() {
  var rows = Ext.getCmp("userGrid").selModel.getSelections();
  if (rows.length < 1) {
   Ext.Msg.alert("提示", "请选择要编辑的账号");
  } else {
   formEditPanel.form.doAction("load", {
      url : "user_Load.action",
      params : {
       "id" : rows[0].json.id
      },
      success : function(form, action) {
       Ext.encode(action.result);
      },
      failer : function(form, action) {
       Ext.MessageBox.alert("提示", "加载数据失败!");
      }
     });
   return true;
  }
  return false;
 }


}
Ext.onReady(function() {
   // 【编辑】按钮触发的事件
   Ext.get("edit").on("click", editWin);
   function editWin() {
    var edit = new operateEdit();
    edit.showEditWin();
   }

  });
//当window使用的是close关闭窗体时,使用如上的方法能够解决第2次点击弹出窗体时报为null的错误

你可能感兴趣的:(json,Ajax,正则表达式,ext,mobile)