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

'Ext Js' form field validation using 'validator'

本文关键字:验证 表单 Ext Js 字段      更新时间:2023-09-26

嗨,我对"Ext JS"很陌生(大约4天),必须编辑"Ext JS'表单。该表单用于编辑现有条目。因此,我必须更新此表单中的"项目名称"字段,并需要遵循以下条件。

  1. 用户可以提交具有旧项目名称的表单(旧项目name表示加载表单时的项目名称)。

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

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

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

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