1. 程式人生 > net教程 > Ext.NET加入自定義驗證JS函式

Ext.NET加入自定義驗證JS函式

  ExtJS驗證很方便,在使用FormPanel的時候,我們可以很方便的進行驗證。比如設定必填項、正則、欄位型別等等。比如如下所示:

Ext.NET加入自定義驗證JS函式_ASP.NET

上面的驗證是這麼寫的:

<Listeners> <ClientValidation Handler="#{btnSave}.setDisabled(!valid); #{tbSave}.setDisabled(!valid);#{btnSumbit1}.setDisabled(!valid);#{btnSumbit2}. setDisabled(!valid);var valCs=valid ? valaccept : valexclamation; var msg=valid ? <span style=color:green;>驗證通過,可以提交資料 : <span style=color:red;>輸入有誤,請檢查標紅的輸入項。; this.getBottomToolbar().setStatus({text :msg, iconCls: valCs}); showMsg(溫馨提示,msg,valCs);" /> </Listeners>

但是往往,有些複雜的驗證我們是需要我們寫指令碼驗證的。那麼怎麼做到通用呢?比如下面的情況:

Ext.NET加入自定義驗證JS函式_ASP.NETExt.NET加入自定義驗證JS函式_ASP.NET

左側S、M、L、XL總數不能超過2件,右側不能超過6件。首先可以定義以下驗證JS,來驗證數量是否超過最大值。

    function valSumMax(ids, maxValue, msg) {
        if (ids != null &;&; ids.length > 0) {
            var _temp = 0;
            for (var i = 0; i < ids.length; i++) {
                var value = Ext.getCmp(ids[i]).getValue();
                if (!isNaN(value)) {
                    _temp += value;
                    if (_temp > maxValue) {
                        var message = { IsVal: false, Message: msg != "" ? msg : ("超過最大值" + maxValue + "。") };
                        return message;
                    }
                }
            }
        }
        var message = { IsVal: true, Message: };
        return message;
    }為了做到通用,於是又定義以下JS函式
    function CustomValidator() {
        var msg = valSumMax(ids1, 2, "美容顧問服裝最多隻能填2件。請修改總數。");
        if (!msg.IsVal)
            return msg;
        msg = valSumMax(ids2, 6, "美容師服裝最多隻能填6件。請修改總數。");
        return msg;
    }
    function ValCustomValidator(isVal, valid) {
        if (typeof (valid) != undefined &;&; (!valid))
            return valid;
        if (typeof (isVal) == undefined || isVal == null || isVal) {
            var msg = CustomValidator();
            if (!msg.IsVal) {
                Ext.MessageBox.show({
                    title: 錯誤,
                    msg: msg.Message,
                    buttons: Ext.MessageBox.OK,
                    icon: Ext.MessageBox.ERROR
                });
                return false;
            } else {
                return true;
            }
        } else {
            return CustomValidator();
        }
    }最後,要寫監聽的驗證Handler了。可以這麼寫:

_fp.Listeners.ClientValidation.Handler =
               @"
                            var isCheckd=valid;var msgs;var msg=;
                            if(t