要素UIは生成されたフォームは、PC、携帯ビス適合検証ルールを横断V-のフォームの検証を行います

全体的なアイデア:

1:使用要素-UIグリッド解像度と小さな適応を達成するために、高解像度

2:それぞれの選択されたオブジェクトを形成するデータのセットのシミュレーション、結合値と目標検証ルールを生成します

3:スクリプトタグでは、データ()、カスタム検証ルール(すなわち発生認証オブジェクト)を作成フックにこれらのカスタムルールに追加することができるように

ここでは全体の日のためのコードは次のとおりです。

<テンプレート> 
    <DIV CLASS = "BOX1"> 
        <divのスタイル= "マージントップ:400ピクセル;"> </ div> <EL-行> <EL-COL:XS = "0":MD = "3"> &NBSP; </ EL-COL> 
            <EL-COL:XS = "24":MD = "18"> <EL-形ラベル幅= "100pxに" REF = "FORMDATA":モデル= "FORMDATA":ルール= "ルール"> <DIV:インデックス= "(インデックス+ '')" = V-ための"arrListで(項目、インデックス)":キー= "item.name"> 
                        <EL-フォーム項目V-IF = "アイテム.nameの== '選択' item.name ">:: "ラベル=" item.name」=小道具" 
                            "<エル・セレクトV-model.trim =" FORMDATA [item.name]
                                        プレースホルダ= "活動エリアを選択して" 
                                        変更@ = "VALCHANGE" 
                                        スタイル= "幅:100%;">

        
            
                
                    
                                <エル・オプションのラベル= "请选择"値= ""> </ EL-オプション> 
                                <EL-オプションラベル= "区域一"値= "上海"> </ EL-オプション> 
                                <EL-オプションラベル=」区域二"値= "北京"> </ EL-オプション> 
                            </ EL-select>の
                        </ EL-フォーム項目> 
                        <EL-フォーム項目V-ELSE-IF =" item.name == 'テキストエリア' ":プロペラ=" item.name」:LABEL = "item.name"> 
                            <EL-入力タイプ= "テキストエリア" V-model.trim = "FORMDATA [item.name]" @変化= "VALCHANGE"> </ EL-入力>
                        </ EL-フォーム項目> 
                        <EL-フォーム項目のV-ELSE:小道具= "item.name":ラベル= "item.name"> 
                            <EL-入力V-model.trim = "FORMDATA [item.name]" @ぶれ= "VALCHANGE"> </ EL-入力>
                        </ EL-フォーム項目> </ div> 
                    <EL-フォーム項目のスタイル= "テキスト整列:センター;"> 
                        <EL-ボタンタイプ= "主" @ = "submitForm( 'FORMDATAを')"をクリック>立即创建</ EL-ボタン> 
                        <EL-ボタン@クリック= "resetForm( 'FORMDATA')">重置</ EL-ボタン> 
                    </ EL-フォーム項目> </ EL-FORM> </ EL- COL> 
        </ EL-行>
                    
                
            
                

         
    </ div> 
</テンプレート> 

<スクリプト> // '@ / JS / global.js'からグローバルインポート。
// 自定义校验规则(邮箱)のVaRのcheckEmail =(規則、値、コールバック)=> 
    constのmailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ もし

 {(!値){
         返すコールバックを(新しい新しいエラー( 'Eメールを空にすることはできません' ;))
    } 
    のsetTimeout(() => {
         IF (mailReg.test(値)){ 
            コールバック()
        } { 
            コールバック(新しい新しいエラー(「入力正しいメールボックス形式' )); 
        } 
    }、 100 
} 
// 電話確認
するvar checkPhone =(規則、値、コールバック)=> { 
    CONST phoneReg = / ^ 1。[3 | 4 | 5 | 7 | 8。。。。。] [0-9] {}。9 $ /
     IF(!値){
         リターンコールバック(新しい新しいエラー(「電話番号がOHで空にすることはできません」))
    } 
    のsetTimeout(() => {
         // Number.isIntegerデジタルES6方法が整数かどうかを確認し、それだけにはいつも、実際の入力を使用する場合文字列を特定する
        // 私は+実装する暗黙的な変換が先行

        IF(!Number.isInteger(+ 値)){ 
            コールバック(新しい新しいエラー(「してください入力されたデジタル値」))
        } {
             IF phoneReg( .TEST(値)){ 
                コールバック()
            } { 
                コールバック( 
            } 
        }新しい新しいエラー( '電話番号の形式が正しくありません' ))
    }、 100 
} 
エクスポートデフォルト{ 
    コンポーネント:{ 
    }、
    データ(){ 
        リターン{ 
            FORMDATA:{}、// バインディング各フォーム値のオブジェクト 
            arrList:[] // 初期化するために、アナログデータを 
            ルール:{} 、// 検証ルールオブジェクト
        } 
    }、
    作成(){ 
        // アナログダミーデータ
        この .arrList = [ 
            {名: "A1"は、必要:. 1 }、
            {名: "A2"、必須:0 }、
            {名前: }、、 "SELECT" :. 1必須
            {:名前、 "メールで送信" :. 1必須}、
            {名: "電話"は、:. 1を必要}、
            {名前 "のTextArea"は、:. 1必須、} 
        ] 
        // 結合についてオブジェクトフォーム各値
        のために(LET I = 0、LEN = この ; IがLEN <I ++は.arrList.length {)
             VAR OBJ = {[ この "":.arrList [I]は.nameの] }
             この .formData =オブジェクト.ASSIGN({}、この.formData、OBJ); 
        } 
        はconsole.log(この.formData);
         // パリティルールオブジェクトを生成
        するために、I = 0 LET(LEN =この .arrList.length; iがLEN <; iは++ ){
             VARの ARRSの= [];
            もしこの .arrList [I] == 1 .required ){
                 VAR OBJS = { 
                        :必要
                        メッセージ:この .arrList [I] .nameの+ '不能为空' 
                        トリガー: 'ぼかし' 
                    }。
                もしこの .arrList [I] .nameの== '選択' ){ 
                    OBJS = { 
                        必要:
                        メッセージ:この .arrList [I] .nameの+ '空でない' 
                        トリガー: '変更' 
                    } 
                    arrs.push(OBJS); 
                } そう IFこの .arrList [I] .nameの== 'メールに' ){ 
                    ARRS。プッシュ(OBJS); 
                    OBJS = {バリ:のcheckEmail、トリガー'ブラー'}; // のカスタム検証ルール
                    arrs.push(OBJS); 
                } そう IFこの .arrList [I] .nameの== '電話' ){  
                    arrs.push(OBJS)。
                    OBJS = {バリ:checkPhone、トリガー'ブラー'}; // のカスタム検証ルール
                    arrs.push(OBJS); 
                } そう IFこの .arrList [I] .nameの== 'のTextArea' ){ 
                    arrs.push (OBJS); 
                    OBJS = {分:5、最大:. 8、メッセージ: '文字5-8の長さ'、トリガー: 'ぼかし'}; // 長さ検証
                    arrs.push(OBJS); 
                } { 
                    ARRS。プッシュ(OBJS); 
                } 
                
            } 
            これは [.rules この .arrList [I] .nameの] =のARRSと、
        } 
        にconsole.log(これは.rules)
    }、
    搭載(){ 
        

    }、
    メソッド:{ 
        // 提交事件
        submitForm(formNameフォーム){
             この。$、参考文献[フォーム名] .validate((有効)=> {
                 場合(有効){ 
                    警告( '提出!' ); 
                } { 
                    はconsole.log( 'エラーが提出!!' );
                     を返す ; 
                } 
            }); 
        }、
        // 重置事件
         resetForm(formNameフォーム){
             この。$、参考文献[フォーム名] .resetFields(); 
        } 
        // 値変更イベントの各形式
        VALCHANGE(ヴァル){ 
            にconsole.log(ヴァル)
            はconsole.log(この.formData)
        } 
    } 
}
 </ SCRIPT>

 

おすすめ

転載: www.cnblogs.com/fqh123/p/10991437.html