JQueryEasyUI學習筆記(五)


歡迎大家轉載,轉載請注明出處!

希望這個筆記對自己和大家有用,但是本人水平有限,如果出錯的地方,希望大家指出,多多批評,謝謝!

今天使用easyui自帶的form提交方式寫一個注冊表單,使用其自帶的ValidateBox驗證方式並擴展其驗證方法:

這篇筆記竟然被移出首頁了,有點小納悶,好吧,以后寫代碼注釋多寫到代碼外面把,寫在代碼里面,只不過是為了自己和大家看得時候方便而已。

 

這里出發form的submit事件,將數據提交給后台

這里的提交個人覺得不是純正的ajax提交,因為有刷新頁面 //以為我們的form有validate方法,而且在源碼中也有判斷,所以我們直接這樣submit就可以觸發validatebox的驗證方法
$.fn.form.defaults={url:null,onSubmit:function(_2e){return $(this).form("validate");
如果我們不使用easyui的form框架的提交方式,用JQ的異步提交,我們就需要這樣寫:
if($("#regist").form("validate")){}

<script type="text/javascript">
        $(function () {
            //初始化登陸層
            initLogin();
            //首先隱藏注冊的層
            $("#regist").css("display", "none");
            //注冊Form
            initForm();
        });

        //個人習慣方法化書寫
        function initLogin() {
            $("#login").dialog({
                closable: false, //右上角的關閉按鈕,因為dialog框架關聯的是window框架,window框架關聯的是panel框架,所以該API是在panel框架中找到的
                title: "登陸界面", //dialog左上角的名稱
                modal: true, //模式化
                width: 300,
                height: 200,
                buttons: [//dialog右下角的按鈕,以Json數組形式添加
                   {
                   text: "登錄", //按鈕名稱
                   iconCls: "icon-save", //按鈕左側顯示的圖片
                   handler: function () {//按鈕點擊之后出發的方法
                       //JQuery的ajax異步后台提交
                       loginFunc();
                   }
               }, {
                   text: "注冊",
                   handler: function () {
                       //注冊明天再寫,將用easyui自帶的form提交方式,以及自帶的ValidateBox驗證方式
                       registFunc();
                   }
               }]
            });
        }

        //用戶登錄
        function loginFunc() {
            //這里我寫的是最簡略的JQuery異步方法,如想深入了解,請參看JQuery參考手冊
            //要想后台傳遞的參數
            var res = $("#loginForm").serialize(); //將form表單的內容序列化,這里也可以使用原始的取值方法
            //mvc以及webform中可以直接傳遞到后台
            $.post("/Login.ashx", res, function (data) {
                if (data == "ok") {//后台傳遞過來 ok 表示登陸成功
                    $("#dd").dialog("close"); //關閉該dialog
                    $.message.show({//瀏覽器右下角彈框,我列出了幾個屬性,具體請看API
                        title: '提示',
                        msg: '恭喜您,登陸成功!',
                        timeout: 5000, //彈框保留時間
                        showType: 'slide'//展示樣式
                    });
                } else {
                    $.message.alert('提示', "登陸失敗", "error"); //這里使用easyui的message框架,彈出提示信息
                    //這里有三個參數 第一個是Title 第二個是顯示信息 第三個是現實圖標樣式 有error,warning等,具體請看API或者demo
                }
            });
        }


        //注冊方法
        function registFunc() {
            //彈出注冊的層,並關閉當前登錄的層
            $("#login").dialog("close");
            //初始化注冊層
            initRegist();
        }

        //初始化注冊層
        function initRegist() {
            //注冊層隱藏關閉
            $("#registForm").dialog({
                closable: false,
                title: "注冊界面",
                modal: true,
                width: 300,
                height: 600,
                buttons: [
                   {
                       text: "注冊",
                       handler: function () {
                           //這里出發form的submit事件,將數據提交給后台
                           //這里的提交個人覺得不是純正的ajax提交,因為有刷新頁面                           //以為我們的form有validate方法,而且在源碼中也有判斷,所以我們直接這樣submit就可以觸發validatebox的驗證方法
                           //$.fn.form.defaults={url:null,onSubmit:function(_2e){return $(this).form("validate");
                           //如果我們不使用easyui的form框架的提交方式,用JQ的異步提交,我們就需要這樣寫:
                           //if($("#regist").form("validate")){}
                           $("#registForm").submit();
                       }
                   }, {
                       text: "關閉",
                       handler: function () {
                           //關閉注冊的dialog
                           $("#regist").dialog("close");
                           //開啟登陸層
                           $("#login").dialog("open");
                       }
                   }]
            });
        }

        //初始化注冊Form
        function initForm() {
            $("#registForm").form({
                url: "Login.ashx",
                success: function (data) {
                    if (data == "ok") {//注冊成功
                        $.message.alert('提示', "注冊成功", "error");
                        $("#dd").dialog("open");
                    } else {
                        $.message.alert('提示', "注冊失敗", "error");
                    }
                }
            });
        }

        //這里是擴展validatebox的方法
        $.extend($.fn.validatebox.defaults.rules, {
            phone: {
                // 驗證手機號碼
                validator: function (value) {
                    return /^(13|15|18)\d{9}$/i.test(value); //這里就是一個正則表達是
                },
                message: '手機號碼格式不正確'//這里是錯誤后的提示信息
            },
            pwdagain: {
                validator: function (value, param) {
                    return value == $(param[0]).val(); //value是不用我們去填寫的,但是param是需要我們提供的,使用方法為 pwdAgain[""]
                },
                message: '兩次密碼不一致'//這里是錯誤后的提示信息
            }
        });
    </script>

 

這里的文本框全部采用validatebox框架,並采用其自帶的驗證方式,但是自帶的驗證方式並不能滿足我們在編程中的需求,所以我會擴展幾個他的驗證方法,其中擴展方法我在之前的博客中已經寫過,這里再給大家演示一下
 data-options在這個里面寫一些規則,比如easyui自帶的驗證方式,required:true必填項,validType:'email'必須是郵箱格式,當然這些我們都可以自己去擴展,其中自己擴展的方法書寫形式類似validType:'email',validType:'phone'這是我自己擴展的驗證手機號碼的方法
這是validatebox自帶remote驗證方法的源碼,我們可以看出,這里不是異步的,所以使用可能會早場卡屏,不推薦使用
remote: { validator: function (_2a, _2b) {
var _2c = {};
_2c[_2b[1]] = _2a;
var _2d = $.ajax({ url: _2b[0], dataType: "json", data: _2c, async: false, cache: false, type: "post" }).responseText;
return _2d == "true";
}, message: "Please fix this field."
}

<body>
    <div id="login">
        <form id="loginForm" method="POST">
        <table>
            <tr>
                <th>
                    用戶名
                </th>
                <td>
                    <input name="username" type="text" />
                </td>
            </tr>
            <tr>
                <th>
                    密碼
                </th>
                <td>
                    <input name="password" type="password" />
                </td>
            </tr>
        </table>
        </form>
    </div>
    <!-- 用戶注冊-->
    <div id="regist" style="border: 1px #0000cd solid;">
        <form id="registForm" method="POST">
        <table>
            <tr>
                <th>
                    用戶名
                </th>
                <td>
                    <input name="name" id="name" class="easyui-validatebox" data-options="required:true" />
                    <!-- 這里的文本框全部采用validatebox框架,並采用其自帶的驗證方式,但是自帶的驗證方式並不能滿足我們在編程中的需求,所以我會擴展幾個他的驗證方法,其中擴展方法我在之前的博客中已經寫過,這里再給大家演示一下-->
                    <!-- data-options在這個里面寫一些規則,比如easyui自帶的驗證方式,required:true必填項,validType:'email'必須是郵箱格式,當然這些我們都可以自己去擴展,其中自己擴展的方法書寫形式類似validType:'email',validType:'phone'這是我自己擴展的驗證手機號碼的方法-->
                    <!--這是validatebox自帶remote驗證方法的源碼,我們可以看出,這里不是異步的,所以使用可能會早場卡屏,不推薦使用
        remote: { validator: function (_2a, _2b) {
        var _2c = {};
        _2c[_2b[1]] = _2a;
        var _2d = $.ajax({ url: _2b[0], dataType: "json", data: _2c, async: false, cache:             false, type: "post" }).responseText;
        return _2d == "true";
        }, message: "Please fix this field."
                    }-->
                </td>
            </tr>
            <tr>
                <th>
                    密碼
                </th>
                <td>
                    <input name="pwd" id="pwd" class="easyui-validatebox" data-options="required:true" />
                </td>
            </tr>
            <tr>
                <th>
                    重復密碼
                </th>
                <td>
                    <input name="passwordagain" id="passwordagain" class="easyui-validatebox" data-options="required:true"
                        validtype="pwdagain['#registForm input[name=pwd]']" /><!--取得重復密碼中的值並傳入,這里調試了半天,因為各種不仔細報錯,希望大家避免-->
                    <!-- 經驗證,data-options="required:true,validType='pwdagain['#registForm input[name=pwd]']'"這種寫法會報錯,望大家注意-->
                </td>
            </tr>
            <tr>
                <th>
                    郵箱
                </th>
                <td>
                    <input name="mail" id="mail" class="easyui-validatebox" data-options="required:true,validType:'email'" />
                </td>
            </tr>
            <tr>
                <th>
                    手機
                </th>
                <td>
                    <input name="phone" id="phone" class="easyui-validatebox" data-options="required:true,validType:'phone'" />
                </td>
            </tr>
        </table>
        </form>
    </div>
</body>

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM