Detaillierte Erläuterung der Verwendung des Bootstrap-Validators (Codebeispiel)

PHPz
Freigeben: 2018-10-16 15:25:48
Original
10825 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Verwendung des Bootstrap-Validators ausführlich erläutern. Welche Vorsichtsmaßnahmen gibt es für die Verwendung des Bootstrap-Validators? Hier ist ein praktischer Fall.

[Ähnliche Videoempfehlungen: Bootstrap-Tutorial]

Detaillierte Erläuterung der Verwendung des Bootstrap-Validators (Codebeispiel)

Detaillierte Erläuterung der Verwendung des Bootstrap-Validators (Codebeispiel)

Die erforderlichen js, css und img werden unten erklärt, bitte geduldig lesen!
Erforderliche js-Dateien: jquery.min.js, bootstrapValidator.min.js, bootstrap-validator-default.js (eine angepasste Standardkonfigurationsdatei , geschrieben von einer einzelnen, inoffiziellen Datei) Die ersten beiden Dateien sind auf der CDN verfügbar. Der Inhalt von bootstrap-validator-default.js lautet wie folgt:

/*默认规则 start*///ip格式$.fn.bootstrapValidator.validators.ip = {    //message: "ip格式不正确"
    validate: function(validator, $field, options) {        var value = $field.val(),
            ipReg = /^(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/;        if (value === '') {            return true;
        }        return ipReg.test(value);
    }
};//password格式$.fn.bootstrapValidator.validators.pw = {    //message: "必须包含数字、英文字母、特殊字符"
    validate: function(validator, $field, options) {        var value = $field.val(),
            ipReg = /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./;
        if (typeof value != 'string' || !ipReg.test(value)) {            return false;
        }        return true;
    }
};//不允许有空格$.fn.bootstrapValidator.validators.noSpace = {    //message: "必须包含数字、英文字母、特殊字符"
    validate: function(validator, $field, options) {        var value = $field.val();        if (typeof value != 'string' || value.indexOf(' ') > -1) {            return false;
        }        return true;
    }
};//网关格式$.fn.bootstrapValidator.validators.mask = {    //message: "网关不可达"
    validate: function(validator, $field, options) {        var ipArr = $field.parent().parent().find('input[name="ip"]').val().split('.'),
            gatewayArr = $field.parent().parent().find('input[name="gateway"]').val().split('.'),
            value = $field.val(),
            netmaskArr = value.split('.'),
            len = 4,
            i = 0;        if (ipArr.length !== len || gatewayArr.length !== len || netmaskArr.length !== len) {            return false;
        }        for (; i < len; i++) {            if ((ipArr[i] & netmaskArr[i]) !== (gatewayArr[i] & netmaskArr[i])) {                return false;
            }
        }        return true;
    }
};//邮箱 表单验证规则$.fn.bootstrapValidator.validators.mail = {    //message: "邮箱格式不正确"
    validate: function(validator, $field, options) {        var mail = /^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$/,
            value = $field.val();        return mail.test(value);
    }
};//电话验证规则$.fn.bootstrapValidator.validators.phone = {    //message: "0371-68787027"
    validate: function(validator, $field, options) {        var phone = /^0\d{2,3}-\d{7,8}$/,
            value = $field.val();        return phone.test(value);
    }
};//区号验证规则$.fn.bootstrapValidator.validators.ac = {    //message: "区号如:010或0371"
    validate: function(validator, $field, options) {        var ac = /^0\d{2,3}$/,
            value = $field.val();        return ac.test(value);
    }
};//无区号电话验证规则$.fn.bootstrapValidator.validators.noactel = {    //message: "电话格式如:68787027"
    validate: function(validator, $field, options) {        var noactel = /^\d{7,8}$/,
            value = $field.val();        return noactel.test(value);
    }
};/*默认规则 end*/$.fn.extend({
    initBV: function(config) { //初始化函数
        if (this.length == 0 || this[0].tagName !== &#39;FORM&#39;) {            return false;
        }        var $form = this.eq(0),
            $inputs = $form.find(&#39;input&#39;),
            $errors = $form.find(&#39;.errors&#39;),
            $itemBtn = $form.find(&#39;.item-btn&#39;);        //让ul.errors中显示验证项
        function initTips(fields) {            var validator, notEmpty, $errField;

            fields = fields.fields || fields;            if (!fields) return false;            for (var field in fields) {
                $errField = $form.find(&#39;#errors-&#39; + field);
                $errField.hide().find(&#39;li&#39;).remove();
                validators = fields[field].validators;
                notEmpty = false;                for (var vali in validators) {
                    $(&#39;<li/>&#39;)
                        .addClass(&#39;text-left&#39;)
                        .attr(&#39;data-field&#39;, field)
                        .attr(&#39;data-vali&#39;, vali)
                        .html(validators[vali].message)
                        .appendTo($errField);                    if (vali == &#39;notEmpty&#39;) {
                        notEmpty = true;
                    }
                }                if (notEmpty) {
                    $errField.data(&#39;status&#39;, &#39;error&#39;);
                } else {
                    $errField.data(&#39;status&#39;, &#39;success&#39;);
                }
            }            return false;
        }

        initTips(config.fields);

        $form.bootstrapValidator(config)
            .on(&#39;success.form.bv&#39;, function(e, data) { //点击提交之后
                // Prevent form submission
                e.preventDefault();                return false;
            }).on(&#39;success.field.bv&#39;, function(e, data) {                var removeClass, successClass;                if (data.element[0].value) {                    //验证成功
                    console.log(&#39;real success&#39;)
                    removeClass = &#39;error&#39;;
                    addClass = &#39;success&#39;;
                } else {                    //验证的其实是&#39;&#39;(空字符串),但也被算是success事件
                    console.log(&#39;not success&#39;);
                    removeClass = &#39;error success&#39;;
                    addClass = &#39;normal&#39;;
                }
                $errors.hide();
                $form.find(&#39;#errors-&#39; + data.field).show().data(&#39;status&#39;, &#39;success&#39;).find(&#39;li&#39;).each(function(idx, item) {
                    $(item).removeClass(removeClass).addClass(addClass);
                });
            }).on(&#39;error.field.bv&#39;, function(e, data) {                // data.bv      --> The BootstrapValidator instance
                // data.field   --> The field name
                // data.element --> The field element

                // Get the messages of field
                var field = data.field;                var messages = data.bv.getMessages(data.element);                // Remove the field messages if they&#39;re already available
                $errors.hide();
                $form.find(&#39;#errors-&#39; + data.field).show().data(&#39;status&#39;, &#39;error&#39;).find(&#39;li&#39;).each(function(idx, item) {
                    item = $(item);                    if (messages.indexOf(item.text().replace(&#39;&&#39;, &#39;&&#39;)) > -1 || config.fields[data.field].validators.notEmpty && messages.indexOf(config.fields[data.field].validators.notEmpty.message) > -1) {
                        item.removeClass(&#39;success&#39;).addClass(&#39;error&#39;);
                    } else {
                        item.removeClass(&#39;error&#39;).addClass(&#39;success&#39;);
                    }
                });                // Hide the default message
                // $field.data(&#39;bv.messages&#39;) returns the default element containing the messages
                data.element
                    .data(&#39;bv.messages&#39;)
                    .find(&#39;.help-block[data-bv-for="&#39; + data.field + &#39;"]&#39;)
                    .hide();
            });

        $inputs.blur(function(e) {
            $errors.hide();
        })
        $inputs.focus(function(e) {
            $errors.hide();
            $(this).trigger(&#39;input&#39;);
            $(this).parent().find(&#39;.totalTip&#39;).hide();
            $form.find(&#39;#errors-&#39; + this.name).show();
        })
        $itemBtn.click(function(e) {
            e.preventDefault();
            $form.find(&#39;input&#39;).trigger(&#39;input&#39;);
            $(&#39;.errors&#39;).hide();            return false;
        });
    },
    valiFields: function(fields) { //验证fields是否验证通过,未通过则提示信息
        var status = true,
            fieldStatus, $errField, $errFiePar, $totalTip;

        fields = fields.fields || fields;        if (!fields) return false;        for (var field in fields) {
            $errField = $(&#39;#errors-&#39; + field);
            fieldStatus = $errField.data(&#39;status&#39;);            if (fieldStatus == &#39;error&#39;) {
                $errFiePar = $errField.parent(),
                    $totalTip = $errFiePar.find(&#39;.totalTip&#39;);                if ($totalTip.length) {
                    $totalTip.show();
                } else {
                    $errFiePar.append(&#39;<span class="totalTip text-left">&#39; + fields[field].message + &#39;</span>&#39;);
                }
            }
            status = status && fieldStatus == &#39;success&#39;;
        }        return status;
    }
});
Nach dem Login kopieren
Erforderliche CSS-Datei: bootstrap-validator-my.css (eine angepasste Standardkonfigurationsdatei). , geschrieben von einer einzelnen, inoffiziellen Datei)

bootstrap-validator-my.css-Inhalt lautet wie folgt:

* {    margin: 0;    padding: 0;    box-sizing: border-box;
}input,button {    outline: none;
}ul {    list-style: none;
}/*字体样式*/.text-right {    text-align: right;
}.text-left {    text-align: left;
}.text-center,.center {    text-align: center;
}.bold {    font-weight: bold;
}/*位置样式*/.relative {    position: relative;
}.absolute {    position: absolute;
}.fixed {    position: fixed;
}/*浮动相关*/.float,.float-left {    float: left;
}.float-right {    float: right;
}.clear:after {    content: ".";    display: block;    height: 0;    visibility: hidden;    clear: both;
}.pageWrap {    height: auto;    min-height: 100%;
}/*panel start*/.panel {    border: 1px solid #6AC7DC;    border-radius: 4px;    background: #fff;
}.panel>div:first-child {    border-bottom: 1px solid #6AC7DC;    height: 35px;    line-height: 35px;    border-radius: 4px;
}.panel .panel-head {    padding: 0 20px;    position: relative;
}.panel .panel-head .panel-title {    font-weight: bold;
}.panel .panel-head .panel-btns {    position: absolute;    right: 20px;
}.panel .panel-head .panel-btns span {    border-radius: 5px;    color: #fff;    padding: 2px 8px;
}.panel .panel-head .panel-btns span:hover {    cursor: pointer;
}.panel .panel-head .panel-btns .panel-btn-add {    background: #3686D1;
}.panel .panel-body {    padding: 20px;
}.panel .panel-body .panel-table {    width: 100%;    border-collapse: collapse;    text-align: center;
}.panel .panel-body .panel-table td,.panel .panel-body .panel-table th {    border: 1px solid #E0E0E0;    font-size: 14px;    padding: 0 8px;    font-style: normal;
}.panel .panel-body .panel-table th {    height: 33px;    line-height: 33px;
}.panel .panel-body .panel-table td {    height: 28px;    line-height: 28px;
}/*panel end*//*所有表单元素样式 start*/.form {    display: flex;    justify-content: center;    padding: 20px;
}.form .item-txt,.form .item-sel {    width: 300px;    height: 30px;    line-height: 30px;    border: 1px solid #CCCCCC;    padding: 0 10px;
}.form .item-dis {    background: #E3E3E3;    color: #999999;
}.form .item-dis:hover {    cursor: not-allowed;
}.form .item {    font-size: 0;    position: relative;    margin-bottom: 15px;
}.form .totalTip {    position: absolute;    left: 386px;    top: 0;    width: 235px;    height: 30px;    line-height: 30px;    color: red;
}.form .errors {    width: 235px;    position: absolute;    left: 386px;    top: 0;    border: 1px solid #ddd;    box-shadow: 1px 1px 1px #efefef;    background: #f9f9f9;    padding: 5px 10px;    z-index: 100;
}.form .errors li {    line-height: 20px;    padding-left: 18px;    font-size: 12px;    color: #666;    font-family: Tahoma,Helvetica,"Microsoft Yahei","微软雅黑",Arial,STHeiti;    background: url(reg_icons.png) no-repeat -86px -112px;
}.form .errors .arrow {    position: absolute;    top: 8px;    left: -6px;    height: 0px;    width: 0px;    border-top: 6px solid transparent;    border-right: 6px solid #ddd;    border-bottom: 6px solid transparent;
}.form .errors .arrow:after {    content: &#39;&#39;;    position: absolute;    top: -5px;    left: 1px;    border-top: 5px solid transparent;    border-right: 5px solid #f9f9f9;    border-bottom: 5px solid transparent;
}.form .errors li.normal {    background-position: -86px -112px;
}.form .errors li.success {    background-position: -86px -128px;
}.form .errors li.error {    background-position: -86px -144px;    color: red;
}.form .item * {    font-size: 14px;
}.form .item .item-label {    display: inline-block;
}.form .item .item-btn {    height: 30px;    width: 300px;    line-height: 30px;    display: inline-block;    background: #3686D1;    color: #fff;    font-weight: bold;    text-align: center;
}.form .item .item-btn:hover {    cursor: pointer;
}.form .error-cont {    color: gray;    display: inline-block;    text-align: left;    font-size: 12px;    height: 15px;    position: relative;    white-space: nowrap;
}.form .error-cont .icon {    position: absolute;    top: 1px;
}.form .error-cont .tip {    position: absolute;    left: 20px;    font-size: 12px;
}.form .redtip {    color: red;    font-weight: bold;    display: inline-block;    height: 30px;    line-height: 30px;
}/*所有表单元素样式 end*/
Nach dem Login kopieren
Das erforderliche Bild ist:

Detaillierte Erläuterung der Verwendung des Bootstrap-Validators (Codebeispiel)

<!DOCTYPE html><html><head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>bootstrap-validator-my</title>
    <link rel="stylesheet" href="bootstrap-validator-my.css">
    </head><body>
    <div class="panel">
        <div class="panel-head">
        </div>
        <div class="panel-body">
            <form id="defaultForm" role="form" class="form-signin form" action="registerAccount.do" method="post">
                <div class="text-right">
                    <div class="form-group item">
                        <label class="item-label" for="username">用户名:</label>
                        <input class="form-control item-txt" type="text" name="username" id="username" />
                        <ul id="errors-username" data-status="" class="errors" style="display: none;">
                            <span class="arrow"></span>
                        </ul>
                    </div>
                    <div class="form-group item">
                        <label class="item-label" for="ip">ip:</label>
                        <input class="form-control item-txt" type="text" name="ip" id="ip" />
                        <ul id="errors-ip" data-status="" class="errors" style="display: none;">
                            <span class="arrow"></span>
                        </ul>
                    </div>
                    <div class="form-group item">
                        <label class="item-label" for="password">密码:</label>
                        <input class="form-control item-txt" type="password" name="password" id="password" />
                        <ul id="errors-password" data-status="" class="errors" style="display: none;">
                            <span class="arrow"></span>
                        </ul>
                    </div>
                    <div class="form-group item">
                        <label class="item-label" for="newpassword">新密码:</label>
                        <input class="form-control item-txt" type="password" name="newpassword" id="newpassword" />
                        <ul id="errors-newpassword" data-status="" class="errors" style="display: none;">
                            <span class="arrow"></span>
                        </ul>
                    </div>
                    <div class="form-group item">
                        <label class="item-label" for="repassword">确认密码:</label>
                        <input class="form-control item-txt" type="password" name="repassword" id="repassword" />
                        <ul id="errors-repassword" data-status="" class="errors" style="display: none;">
                            <span class="arrow"></span>
                        </ul>
                    </div>
                    <div class="form-group item">
                        <span class="item-btn" type="submit">确认注册</span>
                    </div>
                </div>
            </form>
        </div>
    </div>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap-validator/0.5.3/js/bootstrapValidator.min.js"></script>
    <script src="bootstrap-validator-default.js"></script>
    <script>

    var config = {        fields: { /*验证:规则*/
            username: { //验证input项:验证规则
                message: &#39;The username is not valid&#39;,                validators: {                    stringLength: {                        min: 6,                        max: 30,                        message: &#39;用户名长度必须在6到30之间&#39;
                    },                    regexp: {                        regexp: /^[a-zA-Z0-9_\.]+$/,                        message: &#39;用户名由数字字母下划线和.组成&#39;
                    },                    notEmpty: {                        message: &#39;用户名不能为空&#39;
                    }
                }
            },            ip: {                message: &#39;ip无效&#39;,                validators: {                    ip: {                        message: &#39;ip格式不正确&#39;
                    }
                }
            },            password: {                message: &#39;密码无效&#39;,                
                validators: {                    pw: {                        // regexp: /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./,
                        message: &#39;必须包含数字、英文字母、特殊字符&#39;
                    },                    stringLength: {                        min: 8,                        message: &#39;密码长度须大于等于8位&#39;
                    }
                }
            },            newpassword: {                message: &#39;密码无效&#39;,                validators: {                    regexp: {                        regexp: /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./,                        message: &#39;密码没通过&#39;
                    },                    stringLength: {                        min: 8,                        message: &#39;密码长度须大于等于8位&#39;
                    },                    different: { //不能和用户名相同
                        field: &#39;password&#39;, //需要进行比较的input name值
                        message: &#39;新密码不能和旧密码相同&#39;
                    },                    identical: { //相同
                        field: &#39;repassword&#39;, //需要进行比较的input name值
                        message: &#39;新密码和确认密码要一致&#39;
                    }
                }
            },            repassword: {                message: &#39;密码无效&#39;,                validators: {                    regexp: {                        regexp: /.*(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_])./,                        message: &#39;密码没通过&#39;
                    },                    stringLength: {                        min: 8,                        message: &#39;密码长度须大于等于8位&#39;
                    },                    different: { //不能和用户名相同
                        field: &#39;password&#39;, //需要进行比较的input name值
                        message: &#39;确认密码不能和旧密码相同&#39;
                    },                    identical: { //相同
                        field: &#39;newpassword&#39;, //需要进行比较的input name值
                        message: &#39;新密码和确认密码要一致&#39;
                    }
                }
            }
        }
    };    var $form = $(&#39;#defaultForm&#39;);
    $form.initBV(config);
    $form.find(&#39;.item-btn&#39;).click(function(e) {        if($form.valiFields(config.fields)) {            console.log(1)
        }else {            console.log(0)
        }
    });    </script></body></html>
Nach dem Login kopieren
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Lektüre:

So erstellen Sie schnell HTML-Header-Code mit Sublime

Eine Zusammenfassung gängiger Funktionen in JS

Eine Sammlung von HTML5

Verwenden Sie

und Absätze


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung des Bootstrap-Validators (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage