基於jquery的驗證類庫(3)

来源:互联网 发布:linux系统如何上网 编辑:程序博客网 时间:2024/06/06 02:52

var vCheck = {
    name: "chkChecked",
    warning: "請選擇其中一個選項",
    getWarning: function($ctl) {
        return ($ctl.attr("warning") || this.warning);
    },
    vd: function($ctl) {
        var result = true;

        switch ($ctl.attr("type").toLowerCase()) {

            case "radio":
                result = $(":radio[name$='" + $ctl.attr("name") + "']:checked").size() > 0;
                break;

            case "checkbox":
                var ctlName = $ctl.attr("name");
                var $boxs = $(":checkbox[name$='" + ctlName + "']");

                // 適用於ASP.NET的CheckBoxList
                if ($boxs.size() == 1 && 
     ctlName.indexOf("$") > -1 &&
     $ctl.next().get(0).tagName.toLowerCase() == "label") {

                    result = $(":checkbox[name^='" + ctlName.substring(0, ctlName.lastIndexOf("$")) + "']:checked").size() > 0;
                }
                else {
                    result = $boxs.filter(":checked").size() > 0;
                }
                break;
        }
        return result;
    }
};

var vLength = {
    name: "chkLength",
    warning: "該欄位有限制字元數",
    getWarning: function($ctl) {
        return ($ctl.attr("warning") || this.warning);
    },
    vd: function($ctl) {

        var result = true;
        var value = $.trim($ctl.val());
 
        var blntextarea = $ctl.get(0).tagName.toLowerCase() == "textarea";

        if (blntextarea) value = value.replace(/\n/g, "\n\r");

        var maxLen = $ctl.attr("maxLen") ?
      $ctl.attr("maxLen") :
      $ctl.attr("maxlength") ? $ctl.attr("maxlength") : 0;

        this.warning = $ctl.attr("warning") ||
      "該欄位最多只接受 " + maxLen + " 個字元數" +
      (blntextarea ? "(換行佔2個字元)" : "");

        result = (value.length <= maxLen);
        
        return result;
    }
};

var vEmail = {
    name: "chkEmail",
    warning: '請輸入正確的Email格式 [多筆以";"號隔開] ',
    getWarning: function($ctl) {
        return ($ctl.attr("warning") || this.warning);
    },
    vd: function($ctl) {
        var result = true;
        var emails = $.trim($ctl.val());

        if (emails.length > 0) {
            var filter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i;
            
            $.each(emails.split(';'), function(idx, item) {
                if ($.trim(item) != "" && !filter.test($.trim(item))) {
                    result = false;
                    return false;
                }
            });
        }
        return result;
    }
};

原创粉丝点击