' Ext Js'使用'验证器'进行表单字段验证

时间:2015-03-23 15:01:55

标签: javascript extjs

您好我是'Ext JS'的新手(大约4天)并且必须编辑'Ext JS'表格。该表单是编辑现有条目。因此,我必须更新此表单中的“项目名称”字段,并且需要遵循以下条件。

  1. 用户可以使用旧项目名称(旧旧项目)提交表单 name表示加载表单时的项目名称。
  2. 当用户从建议下拉列表中选择现有项目名称时(旧项目名称除外),需要显示错误。

    此条件的基本思想是防止重复的项目名称。

  3. 所以我试着用'验证器'来做这个,但我找不到比较旧项目名称和新项目名称的方法。

    1. 有没有比较这些值的方法??
    2. 验证此字段的任何其他方式???
    3. 这是我到目前为止所做的......

      _est.project.view.panel.updateprojectname.combox = function (projectdetails) {
      var nstore = _est.project.view.panel.updateprojectnstore();
      var combo = Ext.create('Ext.form.ComboBox', {
          fieldLabel: _est.project.text.nameText,
          store: nstore,
          labelSeparator: ' ',
          vtype: 'text',
          afterLabelTextTpl: _est.afterLabelTextRequiredTpl,
          msgTarget: 'side',
          displayField: 'projectname',
          valueField: 'projectname',
          labelWidth: 130,
          maxLength: 200
          name: 'projectname',
          allowBlank: false,
          pageSize: true,
          triggerAction: 'query',
          autoSelect: true,
          minChars: 0,
          itemId : 'project-name-field',
          value: Ext.htmlDecode(projectdetails.projectname),
          hideTrigger: true,
          anchor: '95%',
          validator: function(oldValue) {  
              var existnstore = Ext.StoreMgr.lookup("ptoject-project-names-get-store");
              if(existnstore){
                  var nstore = existnstore.findExact('projectname',oldValue);
                  if(nstore < 0){
                      return true;
                  }else{
                      return 'Job name already exist.';
                  } 
              } 
          },
          listConfig: {
              getInnerTpl: function () {
                  return '<a class="search-item">' +
                          '<span>{projectstate}</span>' +
                          '{projectname}' +
                          '</a>';
              }
          }, 
      });
      return combo; 
      }
      

      任何建议或意见要做到这一点:)提前感谢..

1 个答案:

答案 0 :(得分:1)

我改变'验证器'功能,这对我有用

    validator: function(Value) {   
        var existname = projectdetails.projectname; 
        if(Value !== existname){
            var existnamestore = Ext.StoreMgr.lookup("update-ptoject-project-names-get");
            if(existnamestore){
                var namestore = existnamestore.findExact('projectname',Value);
                if(namestore < 0){
                    return true;
                }else{
                    return 'Job name already exist. Please select different job name.';
                }
            }
        }
        return true; 
    }