From 23c3526fc83c8acc5c2eed26afb8758b13a6f5d0 Mon Sep 17 00:00:00 2001 From: Kartik Visweswaran Date: Thu, 29 May 2014 19:03:31 +0530 Subject: [PATCH] Corrected validation for elements --- js/star-rating.js | 14 +++++++------- js/star-rating.min.js | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/js/star-rating.js b/js/star-rating.js index c048ab5..0787f59 100644 --- a/js/star-rating.js +++ b/js/star-rating.js @@ -39,11 +39,11 @@ } return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); }; - + var applyPrecision = function (val, precision) { return parseFloat(val.toFixed(precision)); }; - + // Rating public class definition var Rating = function (element, options) { this.$element = $(element); @@ -147,8 +147,8 @@ self.clearCaptionClass = options.clearCaptionClass; self.clearValue = options.clearValue; self.$element.removeClass('form-control').addClass('form-control'); - self.$clearElement = $(options.clearElement); - self.$captionElement = $(options.captionElement); + self.$clearElement = isEmpty(options.clearElement) ? null : $(options.clearElement); + self.$captionElement = isEmpty(options.captionElement) ? null : $(options.captionElement); if (typeof self.$rating == 'undefined' && typeof self.$container == 'undefined') { self.$rating = $(document.createElement("div")).html('
'); self.$container = $(document.createElement("div")); @@ -248,7 +248,7 @@ return '' + caption + ''; }, getValueFromPosition: function (pos) { - var self = this, precision = getDecimalPlaces(self.step), + var self = this, precision = getDecimalPlaces(self.step), percentage, val, maxWidth = self.$rating.width(); percentage = (pos / maxWidth); val = (self.min + Math.ceil(self.diff * percentage / self.step) * self.step); @@ -392,9 +392,9 @@ * Convert automatically number inputs with class 'rating' * into the star rating control. */ - + $(document).ready(function () { - var $input = isNumberInputSupported() ? $('input.rating[type=number]') : $('input.rating[type=text]'), + var $input = isNumberInputSupported() ? $('input.rating[type=number]') : $('input.rating[type=text]'), count = Object.keys($input).length; if (count > 0) { $input.rating(); diff --git a/js/star-rating.min.js b/js/star-rating.min.js index ff97ce8..303999e 100644 --- a/js/star-rating.min.js +++ b/js/star-rating.min.js @@ -7,4 +7,4 @@ * * For more JQuery plugins visit http://plugins.krajee.com * For more Yii related demos visit http://demos.krajee.com - */!function(t){var e=0,a=5,n=.5,r=function(){var t=document.createElement("input");return t.setAttribute("type","number"),"text"!==t.type},l=function(e,a){return"undefined"==typeof e||null===e||void 0===e||e==[]||""===e||a&&""===t.trim(e)},i=function(t,e,a){var n=l(t.data(e))?t.attr(e):t.data(e);return n?n:a[e]},s=function(t){var e=(""+t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return e?Math.max(0,(e[1]?e[1].length:0)-(e[2]?+e[2]:0)):0},o=function(t,e){return parseFloat(t.toFixed(e))},c=function(e,a){this.$element=t(e),this.init(a)};c.prototype={constructor:c,_parseAttr:function(t,r){var s=this,o=s.$element;if("range"===o.attr("type")||"number"===o.attr("type")){var c=i(o,t,r),p=n;"min"===t?p=e:"max"===t?p=a:"step"===t&&(p=n);var u=l(c)?p:c;return parseFloat(u)}return parseFloat(r[t])},listen:function(){var e=this;e.$rating.on("click",function(t){e.inactive||(w=t.pageX-e.$rating.offset().left,e.setStars(w),e.$element.trigger("change"),e.$element.trigger("rating.change",[e.$element.val(),e.$caption.html()]))}),e.$clear.on("click",function(){e.inactive||e.clear()}),t(e.$element[0].form).on("reset",function(){e.inactive||e.reset()})},initSlider:function(t){var r=this;l(r.$element.val())&&r.$element.val(0),r.initialValue=r.$element.val(),r.min="undefined"!=typeof t.min?t.min:r._parseAttr("min",t),r.max="undefined"!=typeof t.max?t.max:r._parseAttr("max",t),r.step="undefined"!=typeof t.step?t.step:r._parseAttr("step",t),(isNaN(r.min)||l(r.min))&&(r.min=e),(isNaN(r.max)||l(r.max))&&(r.max=a),(isNaN(r.step)||l(r.step)||0==r.step)&&(r.step=n),r.diff=r.max-r.min},init:function(e){var a=this;a.options=e,a.initSlider(e),a.checkDisabled(),$element=a.$element,a.containerClass=e.containerClass,a.glyphicon=e.glyphicon;var n=a.glyphicon?"":"★";a.symbol=l(e.symbol)?n:e.symbol,a.rtl=e.rtl||a.$element.attr("dir"),a.rtl&&a.$element.attr("dir","rtl"),a.showClear=e.showClear,a.showCaption=e.showCaption,a.size=e.size,a.stars=e.stars,a.defaultCaption=e.defaultCaption,a.starCaptions=e.starCaptions,a.starCaptionClasses=e.starCaptionClasses,a.clearButton=e.clearButton,a.clearButtonTitle=e.clearButtonTitle,a.clearButtonBaseClass=l(e.clearButtonBaseClass)?"clear-rating":e.clearButtonBaseClass,a.clearButtonActiveClass=l(e.clearButtonActiveClass)?"clear-rating-active":e.clearButtonActiveClass,a.clearCaption=e.clearCaption,a.clearCaptionClass=e.clearCaptionClass,a.clearValue=e.clearValue,a.$element.removeClass("form-control").addClass("form-control"),a.$clearElement=t(e.clearElement),a.$captionElement=t(e.captionElement),"undefined"==typeof a.$rating&&"undefined"==typeof a.$container&&(a.$rating=t(document.createElement("div")).html('
'),a.$container=t(document.createElement("div")),a.$container.before(a.$rating),a.$container.append(a.$rating),a.$element.before(a.$container).appendTo(a.$rating)),a.$stars=a.$rating.find(".rating-stars"),a.generateRating(),a.$clear=l(a.$clearElement)?a.$container.find("."+a.clearButtonBaseClass):a.$clearElement,a.$caption=l(a.$captionElement)?a.$container.find(".caption"):a.$captionElement,a.setStars(),a.$element.hide(),a.listen(),a.showClear&&a.$clear.attr({"class":a.getClearClass()})},checkDisabled:function(){var t=this;t.disabled=i(t.$element,"disabled",t.options),t.readonly=i(t.$element,"readonly",t.options),t.inactive=t.disabled||t.readonly},getClearClass:function(){return this.clearButtonBaseClass+" "+(this.inactive?"":this.clearButtonActiveClass)},generateRating:function(){var t=this,e=t.renderClear(),a=t.renderCaption(),n=t.rtl?"rating-container-rtl":"rating-container",r=t.getStars();n+=t.glyphicon?""==t.symbol?" rating-gly-star":" rating-gly":" rating-uni",t.$rating.attr("class",n),t.$rating.attr("data-content",r),t.$stars.attr("data-content",r);var n=t.rtl?"star-rating-rtl":"star-rating";t.$container.attr("class",n+" rating-"+t.size),t.inactive?t.$container.removeClass("rating-active").addClass("rating-disabled"):t.$container.removeClass("rating-disabled").addClass("rating-active"),"undefined"==typeof t.$caption&&"undefined"==typeof t.$clear&&(t.rtl?t.$container.prepend(a).append(e):t.$container.prepend(e).append(a)),l(t.containerClass)||t.$container.removeClass(t.containerClass).addClass(t.containerClass)},getStars:function(){for(var t=this,e=t.stars,a="",n=1;e>=n;n++)a+=t.symbol;return a},renderClear:function(){var t=this;if(!t.showClear)return"";var e=t.getClearClass();return l(t.$clearElement)?'
'+t.clearButton+"
":(t.$clearElement.removeClass(e).addClass(e).attr({title:t.clearButtonTitle}),t.$clearElement.html(t.clearButton),"")},renderCaption:function(){var t=this,e=t.$element.val();if(!t.showCaption)return"";var a=t.fetchCaption(e);return l(t.$captionElement)?'
'+a+"
":(t.$captionElement.removeClass("caption").addClass("caption").attr({title:t.clearCaption}),t.$captionElement.html(a),"")},fetchCaption:function(t){var e=this,a=parseFloat(t),n=l(e.starCaptionClasses[a])?e.clearCaptionClass:e.starCaptionClasses[a],r=l(e.starCaptions[a])?e.defaultCaption.replace(/\{rating\}/g,a):e.starCaptions[a],i=a==e.clearValue?e.clearCaption:r;return''+i+""},getValueFromPosition:function(t){var e,a,n=this,r=s(n.step),l=n.$rating.width();return e=t/l,a=n.min+Math.ceil(n.diff*e/n.step)*n.step,an.max&&(a=n.max),a=o(parseFloat(a),r),n.rtl&&(a=n.max-a),a},setStars:function(t){var e=this,a=e.min,n=e.max,r=(e.step,arguments.length?e.getValueFromPosition(t):l(e.$element.val())?0:e.$element.val()),i=0,s=(e.$rating.width(),e.fetchCaption(r));i=(r-a)/n*100,e.rtl&&(i=100-i),e.$element.val(r),i+="%",e.$stars.css("width",i),e.$caption.html(s)},clear:function(){var t=this,e=''+t.clearCaption+"";t.$stars.removeClass("rated"),t.inactive||t.$caption.html(e),t.$element.val(t.clearValue),t.setStars(),t.$element.trigger("rating.clear")},reset:function(){var t=this;t.$element.val(t.initialValue),t.setStars(),t.$element.trigger("rating.reset")},update:function(t){if(arguments.length>0){var e=this;e.$element.val(t),e.setStars()}},refresh:function(e){var a=this;if(arguments.length){a.init(t.extend(a.options,e)),a.showClear?a.$clear.show():a.$clear.hide(),a.showCaption?a.$caption.show():a.$caption.hide()}}},t.fn.rating=function(e){var a=Array.apply(null,arguments);return a.shift(),this.each(function(){var n=t(this),r=n.data("rating"),l="object"==typeof e&&e;r||n.data("rating",r=new c(this,t.extend({},t.fn.rating.defaults,l,t(this).data()))),"string"==typeof e&&r[e].apply(r,a)})},t.fn.rating.defaults={stars:5,glyphicon:!0,symbol:null,disabled:!1,readonly:!1,rtl:!1,size:"md",showClear:!0,showCaption:!0,defaultCaption:"{rating} Stars",starCaptions:{.5:"Half Star",1:"One Star",1.5:"One & Half Star",2:"Two Stars",2.5:"Two & Half Stars",3:"Three Stars",3.5:"Three & Half Stars",4:"Four Stars",4.5:"Four & Half Stars",5:"Five Stars"},starCaptionClasses:{.5:"label label-danger",1:"label label-danger",1.5:"label label-warning",2:"label label-warning",2.5:"label label-info",3:"label label-info",3.5:"label label-primary",4:"label label-primary",4.5:"label label-success",5:"label label-success"},clearButton:'',clearButtonTitle:"Clear",clearButtonBaseClass:"clear-rating",clearButtonActiveClass:"clear-rating-active",clearCaption:"Not Rated",clearCaptionClass:"label label-default",clearValue:0,captionElement:null,clearElement:null,containerClass:null},t(document).ready(function(){var e=t(r()?"input.rating[type=number]":"input.rating[type=text]"),a=Object.keys(e).length;a>0&&e.rating()})}(jQuery); \ No newline at end of file + */!function(t){var e=0,a=5,n=.5,r=function(){var t=document.createElement("input");return t.setAttribute("type","number"),"text"!==t.type},l=function(e,a){return"undefined"==typeof e||null===e||void 0===e||e==[]||""===e||a&&""===t.trim(e)},i=function(t,e,a){var n=l(t.data(e))?t.attr(e):t.data(e);return n?n:a[e]},s=function(t){var e=(""+t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return e?Math.max(0,(e[1]?e[1].length:0)-(e[2]?+e[2]:0)):0},o=function(t,e){return parseFloat(t.toFixed(e))},c=function(e,a){this.$element=t(e),this.init(a)};c.prototype={constructor:c,_parseAttr:function(t,r){var s=this,o=s.$element;if("range"===o.attr("type")||"number"===o.attr("type")){var c=i(o,t,r),p=n;"min"===t?p=e:"max"===t?p=a:"step"===t&&(p=n);var u=l(c)?p:c;return parseFloat(u)}return parseFloat(r[t])},listen:function(){var e=this;e.$rating.on("click",function(t){e.inactive||(w=t.pageX-e.$rating.offset().left,e.setStars(w),e.$element.trigger("change"),e.$element.trigger("rating.change",[e.$element.val(),e.$caption.html()]))}),e.$clear.on("click",function(){e.inactive||e.clear()}),t(e.$element[0].form).on("reset",function(){e.inactive||e.reset()})},initSlider:function(t){var r=this;l(r.$element.val())&&r.$element.val(0),r.initialValue=r.$element.val(),r.min="undefined"!=typeof t.min?t.min:r._parseAttr("min",t),r.max="undefined"!=typeof t.max?t.max:r._parseAttr("max",t),r.step="undefined"!=typeof t.step?t.step:r._parseAttr("step",t),(isNaN(r.min)||l(r.min))&&(r.min=e),(isNaN(r.max)||l(r.max))&&(r.max=a),(isNaN(r.step)||l(r.step)||0==r.step)&&(r.step=n),r.diff=r.max-r.min},init:function(e){var a=this;a.options=e,a.initSlider(e),a.checkDisabled(),$element=a.$element,a.containerClass=e.containerClass,a.glyphicon=e.glyphicon;var n=a.glyphicon?"":"★";a.symbol=l(e.symbol)?n:e.symbol,a.rtl=e.rtl||a.$element.attr("dir"),a.rtl&&a.$element.attr("dir","rtl"),a.showClear=e.showClear,a.showCaption=e.showCaption,a.size=e.size,a.stars=e.stars,a.defaultCaption=e.defaultCaption,a.starCaptions=e.starCaptions,a.starCaptionClasses=e.starCaptionClasses,a.clearButton=e.clearButton,a.clearButtonTitle=e.clearButtonTitle,a.clearButtonBaseClass=l(e.clearButtonBaseClass)?"clear-rating":e.clearButtonBaseClass,a.clearButtonActiveClass=l(e.clearButtonActiveClass)?"clear-rating-active":e.clearButtonActiveClass,a.clearCaption=e.clearCaption,a.clearCaptionClass=e.clearCaptionClass,a.clearValue=e.clearValue,a.$element.removeClass("form-control").addClass("form-control"),a.$clearElement=l(e.clearElement)?null:t(e.clearElement),a.$captionElement=l(e.captionElement)?null:t(e.captionElement),"undefined"==typeof a.$rating&&"undefined"==typeof a.$container&&(a.$rating=t(document.createElement("div")).html('
'),a.$container=t(document.createElement("div")),a.$container.before(a.$rating),a.$container.append(a.$rating),a.$element.before(a.$container).appendTo(a.$rating)),a.$stars=a.$rating.find(".rating-stars"),a.generateRating(),a.$clear=l(a.$clearElement)?a.$container.find("."+a.clearButtonBaseClass):a.$clearElement,a.$caption=l(a.$captionElement)?a.$container.find(".caption"):a.$captionElement,a.setStars(),a.$element.hide(),a.listen(),a.showClear&&a.$clear.attr({"class":a.getClearClass()})},checkDisabled:function(){var t=this;t.disabled=i(t.$element,"disabled",t.options),t.readonly=i(t.$element,"readonly",t.options),t.inactive=t.disabled||t.readonly},getClearClass:function(){return this.clearButtonBaseClass+" "+(this.inactive?"":this.clearButtonActiveClass)},generateRating:function(){var t=this,e=t.renderClear(),a=t.renderCaption(),n=t.rtl?"rating-container-rtl":"rating-container",r=t.getStars();n+=t.glyphicon?""==t.symbol?" rating-gly-star":" rating-gly":" rating-uni",t.$rating.attr("class",n),t.$rating.attr("data-content",r),t.$stars.attr("data-content",r);var n=t.rtl?"star-rating-rtl":"star-rating";t.$container.attr("class",n+" rating-"+t.size),t.inactive?t.$container.removeClass("rating-active").addClass("rating-disabled"):t.$container.removeClass("rating-disabled").addClass("rating-active"),"undefined"==typeof t.$caption&&"undefined"==typeof t.$clear&&(t.rtl?t.$container.prepend(a).append(e):t.$container.prepend(e).append(a)),l(t.containerClass)||t.$container.removeClass(t.containerClass).addClass(t.containerClass)},getStars:function(){for(var t=this,e=t.stars,a="",n=1;e>=n;n++)a+=t.symbol;return a},renderClear:function(){var t=this;if(!t.showClear)return"";var e=t.getClearClass();return l(t.$clearElement)?'
'+t.clearButton+"
":(t.$clearElement.removeClass(e).addClass(e).attr({title:t.clearButtonTitle}),t.$clearElement.html(t.clearButton),"")},renderCaption:function(){var t=this,e=t.$element.val();if(!t.showCaption)return"";var a=t.fetchCaption(e);return l(t.$captionElement)?'
'+a+"
":(t.$captionElement.removeClass("caption").addClass("caption").attr({title:t.clearCaption}),t.$captionElement.html(a),"")},fetchCaption:function(t){var e=this,a=parseFloat(t),n=l(e.starCaptionClasses[a])?e.clearCaptionClass:e.starCaptionClasses[a],r=l(e.starCaptions[a])?e.defaultCaption.replace(/\{rating\}/g,a):e.starCaptions[a],i=a==e.clearValue?e.clearCaption:r;return''+i+""},getValueFromPosition:function(t){var e,a,n=this,r=s(n.step),l=n.$rating.width();return e=t/l,a=n.min+Math.ceil(n.diff*e/n.step)*n.step,an.max&&(a=n.max),a=o(parseFloat(a),r),n.rtl&&(a=n.max-a),a},setStars:function(t){var e=this,a=e.min,n=e.max,r=(e.step,arguments.length?e.getValueFromPosition(t):l(e.$element.val())?0:e.$element.val()),i=0,s=(e.$rating.width(),e.fetchCaption(r));i=(r-a)/n*100,e.rtl&&(i=100-i),e.$element.val(r),i+="%",e.$stars.css("width",i),e.$caption.html(s)},clear:function(){var t=this,e=''+t.clearCaption+"";t.$stars.removeClass("rated"),t.inactive||t.$caption.html(e),t.$element.val(t.clearValue),t.setStars(),t.$element.trigger("rating.clear")},reset:function(){var t=this;t.$element.val(t.initialValue),t.setStars(),t.$element.trigger("rating.reset")},update:function(t){if(arguments.length>0){var e=this;e.$element.val(t),e.setStars()}},refresh:function(e){var a=this;if(arguments.length){a.init(t.extend(a.options,e)),a.showClear?a.$clear.show():a.$clear.hide(),a.showCaption?a.$caption.show():a.$caption.hide()}}},t.fn.rating=function(e){var a=Array.apply(null,arguments);return a.shift(),this.each(function(){var n=t(this),r=n.data("rating"),l="object"==typeof e&&e;r||n.data("rating",r=new c(this,t.extend({},t.fn.rating.defaults,l,t(this).data()))),"string"==typeof e&&r[e].apply(r,a)})},t.fn.rating.defaults={stars:5,glyphicon:!0,symbol:null,disabled:!1,readonly:!1,rtl:!1,size:"md",showClear:!0,showCaption:!0,defaultCaption:"{rating} Stars",starCaptions:{.5:"Half Star",1:"One Star",1.5:"One & Half Star",2:"Two Stars",2.5:"Two & Half Stars",3:"Three Stars",3.5:"Three & Half Stars",4:"Four Stars",4.5:"Four & Half Stars",5:"Five Stars"},starCaptionClasses:{.5:"label label-danger",1:"label label-danger",1.5:"label label-warning",2:"label label-warning",2.5:"label label-info",3:"label label-info",3.5:"label label-primary",4:"label label-primary",4.5:"label label-success",5:"label label-success"},clearButton:'',clearButtonTitle:"Clear",clearButtonBaseClass:"clear-rating",clearButtonActiveClass:"clear-rating-active",clearCaption:"Not Rated",clearCaptionClass:"label label-default",clearValue:0,captionElement:null,clearElement:null,containerClass:null},t(document).ready(function(){var e=t(r()?"input.rating[type=number]":"input.rating[type=text]"),a=Object.keys(e).length;a>0&&e.rating()})}(jQuery); \ No newline at end of file