'Ext Js' 使用 'validator' 进行表单域验证

'Ext Js' form field validation using 'validator'

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

  1. 用户可以使用旧项目名称提交表单(old old project 名称表示加载表单时的项目名称)。

  2. 当用户select 现有项目名称从建议下拉(旧项目名称除外)时,需要显示错误。

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

所以我尝试用 'validator' 来做这个,但是我找不到比较旧项目名称和新项目名称的方法。

  1. 有什么方法可以比较这些值吗??
  2. 还有其他验证此字段的方法吗???

这是我到目前为止所做的...

_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; 
}

对此有任何建议或意见 :) 提前致谢..

我更改了 'validator' 函数,这对我有用

    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; 
    }