BootstrapValidator自定義中文長度校驗
阿新 • • 發佈:2018-12-12
原理
中文字元佔用3個長度,在原stringLength校驗方法的基礎上做了一個擴充套件。
程式
;(function($) { $.fn.bootstrapValidator.validators.proStringLength = { html5Attributes: { message: 'message', min: 'min', max: 'max' }, enableByHtml5: function($field) { var options = {}, maxLength = $field.attr('maxlength'), minLength = $field.attr('minlength'); if (maxLength) { options.max = parseInt(maxLength, 10); } if (minLength) { options.min = parseInt(minLength, 10); } return $.isEmptyObject(options) ? false : options; }, validate: function(validator, $field, options) { var value = $field.val(); if (value === '') { return true; } var length = value.length; for (var i = 0; i < length; i++) { if (value.charCodeAt(i) > 127) { length=length+2; } } var min = $.isNumeric(options.min) ? options.min : validator.getDynamicOption($field, options.min), max = $.isNumeric(options.max) ? options.max : validator.getDynamicOption($field, options.max), isValid = true, message = options.message || $.fn.bootstrapValidator.i18n.stringLength['default']; if ((min && length < parseInt(min, 10)) || (max && length > parseInt(max, 10))) { isValid = false; } switch (true) { case (!!min && !!max): message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.stringLength.between, [parseInt(min, 10), parseInt(max, 10)]); break; case (!!min): message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.stringLength.more, parseInt(min, 10)); break; case (!!max): message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.stringLength.less, parseInt(max, 10)); break; default: break; } return { valid: isValid, message: message }; } }; }(window.jQuery));
使用
accountNo: { message: '賬號驗證失敗', validators: { notEmpty: { message: '賬號不能為空' }, proStringLength: { min: 1, max: 100, message: '長度必須小於100,中文佔3個字元' } } },