| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- (function($) {
- $.fn.bootstrapValidator.i18n.step = $.extend($.fn.bootstrapValidator.i18n.step || {}, {
- 'default': 'Please enter a valid step of %s'
- });
- $.fn.bootstrapValidator.validators.step = {
- html5Attributes: {
- message: 'message',
- base: 'baseValue',
- step: 'step'
- },
- /**
- * Return true if the input value is valid step one
- *
- * @param {BootstrapValidator} validator The validator plugin instance
- * @param {jQuery} $field Field element
- * @param {Object} options Can consist of the following keys:
- * - baseValue: The base value
- * - step: The step
- * - message: The invalid message
- * @returns {Boolean|Object}
- */
- validate: function(validator, $field, options) {
- var value = $field.val();
- if (value === '') {
- return true;
- }
- options = $.extend({}, { baseValue: 0, step: 1 }, options);
- value = parseFloat(value);
- if (!$.isNumeric(value)) {
- return false;
- }
- var round = function(x, precision) {
- var m = Math.pow(10, precision);
- x = x * m;
- var sign = (x > 0) | -(x < 0),
- isHalf = (x % 1 === 0.5 * sign);
- if (isHalf) {
- return (Math.floor(x) + (sign > 0)) / m;
- } else {
- return Math.round(x) / m;
- }
- },
- floatMod = function(x, y) {
- if (y === 0.0) {
- return 1.0;
- }
- var dotX = (x + '').split('.'),
- dotY = (y + '').split('.'),
- precision = ((dotX.length === 1) ? 0 : dotX[1].length) + ((dotY.length === 1) ? 0 : dotY[1].length);
- return round(x - y * Math.floor(x / y), precision);
- };
- var mod = floatMod(value - options.baseValue, options.step);
- return {
- valid: mod === 0.0 || mod === options.step,
- message: $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.step['default'], [options.step])
- };
- }
- };
- }(window.jQuery));
|