www-thermferm/jqwidgets/jqxvalidator.js

Sun, 07 Jul 2019 14:31:10 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 07 Jul 2019 14:31:10 +0200
branch
stable
changeset 603
fcff55324b84
parent 511
2d1d43c3a2c2
child 617
b216f9d4b917
permissions
-rw-r--r--

Merged fix from default

117
7119ea8a5225 Initial setup of wqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*
511
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
2 jQWidgets v4.5.2 (2017-May)
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
3 Copyright (c) 2011-2017 jQWidgets.
117
7119ea8a5225 Initial setup of wqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 License: http://jqwidgets.com/license/
511
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
5 */
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
6 !function(a){a.jqx.jqxWidget("jqxValidator","",{}),a.extend(a.jqx._jqxValidator.prototype,{defineInstance:function(){var b={rules:null,scroll:!0,focus:!0,scrollDuration:300,scrollCallback:null,position:"right",arrow:!0,animation:"fade",animationDuration:150,closeOnClick:!0,onError:null,onSuccess:null,ownerElement:null,_events:["validationError","validationSuccess"],hintPositionOffset:5,_inputHint:[],rtl:!1,hintType:"tooltip"};return this===a.jqx._jqxValidator.prototype?b:(a.extend(!0,this,b),b)},createInstance:function(){"label"==this.hintType&&150==this.animationDuration&&(this.animationDuration=0),this._configureInputs(),this._removeEventListeners(),this._addEventListeners()},destroy:function(){this._removeEventListeners(),this.hide()},validate:function(b){var c,d,e,f,g=!0,h=1/0,i=[];this.updatePosition();for(var j=this,k=0,l=0;l<this.rules.length;l+=1)"function"==typeof this.rules[l].rule&&k++;this.positions=new Array;for(var l=0;l<this.rules.length;l+=1){a(this.rules[l].input);if("function"==typeof this.rules[l].rule){var m=function(l,m){if(c=l,0==c){g=!1;a(m.input);f=a(m.input),i.push(f);var n=f.offset();n&&(d=n.top,h>d&&(h=d,e=f))}k--,0==k&&"function"==typeof b&&(j._handleValidation(g,h,e,i),b&&b(g))};this._validateRule(this.rules[l],m)}else c=this._validateRule(this.rules[l]);if(0==c){g=!1,f=a(this.rules[l].input),i.push(f);var n=f.offset();n&&(d=n.top,h>d&&(h=d,e=f))}}return 0==k?(this._handleValidation(g,h,e,i),g):void 0},validateInput:function(a){for(var b=this._getRulesForInput(a),c=!0,d=0;d<b.length;d+=1)this._validateRule(b[d])||(c=!1);return c},hideHint:function(a){for(var b=this._getRulesForInput(a),c=0;c<b.length;c+=1)this._hideHintByRule(b[c])},hide:function(){for(var a,b=0;b<this.rules.length;b+=1)a=this.rules[b],this._hideHintByRule(this.rules[b])},updatePosition:function(){var b;this.positions=new Array;for(var c=0;c<this.rules.length;c+=1)b=this.rules[c],b.hint&&this._hintLayout(b.hint,a(b.input),b.position,b)},_getRulesForInput:function(a){for(var b=[],c=0;c<this.rules.length;c+=1)this.rules[c].input===a&&b.push(this.rules[c]);return b},_validateRule:function(b,c){var d,e=a(b.input),f=!0,g=this,h=function(f){if(f)g._hideHintByRule(b),c&&c(!0,b);else{var h=g.animation;if(g.animation=null,b.hint&&g._hideHintByRule(b),"none"==a(e).css("display"))return void g._hideHintByRule(b);if(0==a(e).parents().length)return void g._hideHintByRule(b);d=b.hintRender.apply(g,[b.message,e]),g._hintLayout(d,e,b.position,b),g._showHint(d),b.hint=d,g._removeLowPriorityHints(b),c&&c(!1,b),g.animation=h}},i=!1;return"function"==typeof b.rule&&(i=b.rule.call(this,e,h),1==i&&c&&c(!0,b)),"function"==typeof b.rule&&0==i?("function"!=typeof b.hintRender||b.hint||this._higherPriorityActive(b)||!e.is(":visible")||(d=b.hintRender.apply(this,[b.message,e]),this._removeLowPriorityHints(b),this._hintLayout(d,e,b.position,b),this._showHint(d),b.hint=d),f=!1,c&&c(!1,b)):this._hideHintByRule(b),f},_hideHintByRule:function(b){var c,d=a(b.input),e=this,f=function(){if("label"==e.hintType){var a=e;if("top"==a.position||"left"==a.position){if(d.prev().hasClass(".jqx-validator-error-label"))return}else if(d.next().hasClass(".jqx-validator-error-label"))return;"input"!=d[0].nodeName.toLowerCase()?d.find("input").length>0&&(d.find(".jqx-input").length>0?d.find(".jqx-input").removeClass(a.toThemeProperty("jqx-validator-error-element")):d.find(".jqx-text-area").length>0?d.find(".jqx-text-area").removeClass(a.toThemeProperty("jqx-validator-error-element")):d.is(".jqx-checkbox")&&d.find(".jqx-checkbox-default").removeClass(a.toThemeProperty("jqx-validator-error-element")),d.is(".jqx-radiobutton")?d.find(".jqx-radiobutton-default").removeClass(a.toThemeProperty("jqx-validator-error-element")):d.removeClass(a.toThemeProperty("jqx-validator-error-element"))):d.removeClass(a.toThemeProperty("jqx-validator-error-element"))}};b&&(c=b.hint,c&&(this.positions&&this.positions[Math.round(c.offset().top)+"_"+Math.round(c.offset().left)]&&(this.positions[Math.round(c.offset().top)+"_"+Math.round(c.offset().left)]=null),"fade"===this.animation?c.fadeOut(this.animationDuration,function(){c.remove(),f()}):(c.remove(),f())),b.hint=null)},_handleValidation:function(a,b,c,d){a?(this._raiseEvent(1),"function"==typeof this.onSuccess&&this.onSuccess()):(this._scrollHandler(b),this.focus&&c.focus(),this._raiseEvent(0,{invalidInputs:d}),"function"==typeof this.onError&&this.onError(d))},_scrollHandler:function(b){if(this.scroll){var c=this;a("html,body").animate({scrollTop:b},this.scrollDuration,function(){"function"==typeof c.scrollCallback&&c.scrollCallback.call(c)})}},_higherPriorityActive:function(a){for(var b,c=!1,d=this.rules.length-1;d>=0;d-=1){if(b=this.rules[d],c&&b.input===a.input&&b.hint)return!0;b===a&&(c=!0)}return!1},_removeLowPriorityHints:function(a){for(var b,c=!1,d=0;d<this.rules.length;d+=1)b=this.rules[d],c&&b.input===a.input&&this._hideHintByRule(b),b===a&&(c=!0)},_getHintRuleByInput:function(b){for(var c,d=0;d<this.rules.length;d+=1)if(c=this.rules[d],a(c.input)[0]===b[0]&&c.hint)return c;return null},_removeEventListeners:function(){for(var b,c,d,e=0;e<this.rules.length;e+=1){b=this.rules[e],d=b.action.split(","),c=a(b.input);for(var f=0;f<d.length;f+=1)this.removeHandler(c,a.trim(d[f])+".jqx-validator")}},_addEventListeners:function(){var b,c;if(this.host.parents(".jqx-window").length>0){var d=this,e=function(){d.updatePosition()},f=this.host.parents(".jqx-window");this.addHandler(f,"closed",function(){d.hide()}),this.addHandler(f,"moved",e),this.addHandler(f,"moving",e),this.addHandler(f,"resized",e),this.addHandler(f,"resizing",e),this.addHandler(a(document.parentWindow),"scroll",function(){d.scroll&&e()})}for(var g=0;g<this.rules.length;g+=1)b=this.rules[g],c=a(b.input),this._addListenerTo(c,b)},_addListenerTo:function(b,c){var d=this,e=c.action.split(","),f=!1;this._isjQWidget(b)&&(f=!0);for(var g=0;g<e.length;g+=1){var h=a.trim(e[g]);!f||"blur"!=h&&"focus"!=h||b&&"input"!=b[0].nodeName.toLowerCase()&&(b=b.find("input")),this.addHandler(b,h+".jqx-validator",function(a){d._validateRule(c)})}},_configureInputs:function(){this.rules=this.rules||[];for(var a=0;a<this.rules.length;a+=1)this._handleInput(a)},_handleInput:function(a){var b=this.rules[a];b.position||(b.position=this.position),b.message||(b.message="Validation Failed!"),b.action||(b.action="blur"),b.hintRender||(b.hintRender=this._hintRender),b.rule?this._handleRule(b):b.rule=null},_handleRule:function(a){var b,c,d=a.rule,e=!1;if("string"==typeof d?(d.indexOf("=")>=0&&(d=d.split("="),c=d[1].split(","),d=d[0]),b=this["_"+d],b?a.rule=function(a,d){return b.apply(this,[a].concat(c))}:e=!0):"function"!=typeof d?e=!0:a.rule=d,e)throw new Error("Wrong parameter!")},_required:function(b){switch(this._getType(b)){case"jqx-input-inner":if(b.find("input").length>0)return""!==a.trim(b.find("input").val());break;case"textarea":case"password":case"jqx-input":case"jqx-text-area":case"text":var c=a.data(b[0]);if(c.jqxMaskedInput){var d=b.jqxMaskedInput("promptChar"),e=b.jqxMaskedInput("value");return e&&e.indexOf(d)<0}return c.jqxNumberInput?""!==b.jqxNumberInput("inputValue"):!!c.jqxDateTimeInput||""!==a.trim(b.val());case"checkbox":return b.is(":checked");case"radio":return b.is(":checked");case"jqx-check-box":case"jqx-radio-button":return b[0].val();case"div":return b.is(".jqx-checkbox")?b.jqxCheckBox("checked"):!!b.is(".jqx-radiobutton")&&b.jqxRadioButton("checked")}return!1},_notNumber:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=/\d/;return!b.test(a)})},_startWithLetter:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=/\d/;return!b.test(a.substring(0,1))})},_number:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=new Number(a);return!isNaN(b)&&isFinite(b)})},_phone:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=/^\(\d{3}\)(\d){3}-(\d){4}$/;return b.test(a)})},_length:function(a,b,c){return this._minLength(a,b)&&this._maxLength(a,c)},_maxLength:function(a,b){return b=parseInt(b,10),this._validateText(a,function(a){return a.length<=b})},_minLength:function(a,b){return b=parseInt(b,10),this._validateText(a,function(a){return a.length>=b})},_email:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return b.test(a)})},_zipCode:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=/^(^\d{5}$)|(^\d{5}-\d{4}$)|(\d{3}-\d{2}-\d{4})$/;return b.test(a)})},_ssn:function(a){return this._validateText(a,function(a){if(""==a)return!0;var b=/\d{3}-\d{2}-\d{4}/;return b.test(a)})},_validateText:function(a,b){var c;return!!this._isTextInput(a)&&(c=this._isjQWidget(a)&&a.find("input").length>0?a.find("input").val():a.val(),b(c))},_isjQWidget:function(b){var c=a.data(b[0]);return!!(c.jqxMaskedInput||c.jqxNumberInput||c.jqxDateTimeInput)||(b[0].tagName.toLowerCase().indexOf("jqx-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-password-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-complex-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-formatted-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-masked-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-date-time-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-number-input")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-check-box")>=0||(b[0].tagName.toLowerCase().indexOf("jqx-radio-button")>=0||b[0].tagName.toLowerCase().indexOf("angular")>=0)))))))))},_isTextInput:function(a){var b=this._getType(a);return"text"===b||"textarea"===b||"password"===b||"jqx-input-inner"===b||a.is(".jqx-input")||a.is(".jqx-text-area")},_getType:function(b){if(b[0]){var c,d=b[0].tagName.toLowerCase();return"textarea"===d?"textarea":b.is(".jqx-input")?"jqx-input":b.is(".jqx-text-area")?"jqx-text-area":b.find(".jqx-input").length>0?"jqx-input-inner":"input"===d?c=a(b).attr("type")?a(b).attr("type").toLowerCase():"text":"jqx-password-input"===d?"password":"jqx-check-box"===d?"jqx-check-box":"jqx-radio-button"===d?"jqx-radio-button":d}},_hintRender:function(b,c){if("label"==this.hintType){var d=a('<label class="'+this.toThemeProperty("jqx-validator-error-label")+'"></label>');d.html(b);var e=this;return this.closeOnClick&&d.click(function(){e.hideHint(c.selector)}),"left"==this.position||"top"==this.position?d.insertBefore(a(c)):d.insertAfter(a(c)),d}var d=a('<div class="'+this.toThemeProperty("jqx-validator-hint")+' jqx-rc-all"></div>'),f=this;return d.html(b),this.closeOnClick&&d.click(function(){f.hideHint(c.selector)}),null==this.ownerElement?d.appendTo(document.body):this.ownerElement.innerHTML?d.appendTo(a(this.ownerElement)):d.appendTo(this.ownerElement),d},_hintLayout:function(b,c,d,e){if(this._hintRender===e.hintRender){var f;if(f=this._getPosition(c,d,b,e),"label"==this.hintType){var g="2px";"left"!=this.position&&"top"!=this.position||(g="-2px"),"input"!=c[0].nodeName.toLowerCase()&&"textarea"!=c[0].nodeName.toLowerCase()?(c.find(".jqx-text-area").length>0&&c.find(".jqx-text-area").addClass(this.toThemeProperty("jqx-validator-error-element")),c.find("input").length>0&&(c.find(".jqx-input").length>0?c.find(".jqx-input").addClass(this.toThemeProperty("jqx-validator-error-element")):c.find(".jqx-text-area").length>0?c.find(".jqx-text-area").addClass(this.toThemeProperty("jqx-validator-error-element")):c.is(".jqx-checkbox")&&c.find(".jqx-checkbox-default").addClass(this.toThemeProperty("jqx-validator-error-element")),c.is(".jqx-radiobutton")?c.find(".jqx-radiobutton-default").addClass(this.toThemeProperty("jqx-validator-error-element")):c.addClass(this.toThemeProperty("jqx-validator-error-element")))):c.addClass(this.toThemeProperty("jqx-validator-error-element"));var h=a("<span></span>");h.addClass(this.toThemeProperty("jqx-validator-hint")),h.html(b.text()),h.appendTo(a(document.body));var i=h.outerWidth();return h.remove(),b.css({position:"relative",left:a(c).css("margin-left"),width:a(c).width(),top:g}),void("center"==d&&(b.css("width",i),b.css("left","0px"),b.css("margin-left","auto"),b.css("margin-right","auto")))}b.css({position:"absolute",left:f.left,top:f.top}),this.arrow&&this._addArrow(c,b,d,f)}},_showHint:function(a){a&&"fade"===this.animation&&(a.fadeOut(0),a.fadeIn(this.animationDuration))},_getPosition:function(b,c,d,e){var f,g,h=b.offset(),i=b.outerWidth(),j=b.outerHeight();if(this.rtl&&c.indexOf("left")>=0&&(c="right"),this.rtl&&c.indexOf("right")>=0&&(c="left"),null!=this.ownerElement&&(h={left:0,top:0},h.top=parseInt(h.top)+b.position().top,h.left=parseInt(h.left)+b.position().left),e&&e.hintPositionRelativeElement){var k=a(e.hintPositionRelativeElement);h=k.offset(),i=k.width(),j=k.height()}return f=c.indexOf("top")>=0?h.top-j:c.indexOf("bottom")>=0?h.top+d.outerHeight()+this.hintPositionOffset+5:h.top,g=c.indexOf("center")>=0?h.left+this.hintPositionOffset+(i-d.outerWidth())/2:c.indexOf("left")>=0?h.left-d.outerWidth()-this.hintPositionOffset:c.indexOf("right")>=0?h.left+i+this.hintPositionOffset:h.left+this.hintPositionOffset,c.indexOf(":")>=0&&(c=c.split(":")[1].split(","),g+=parseInt(c[0],10),f+=parseInt(c[1],10)),this.positions||(this.positions=new Array),this.positions[Math.round(f)+"_"+Math.round(g)]&&this.positions[Math.round(f)+"_"+Math.round(g)].top==f&&(f+=b.outerHeight()),this.positions[Math.round(f)+"_"+Math.round(g)]={left:g,top:f},{left:g,top:f}},_addArrow:function(b,c,d,e){var f,g,h=a('<div class="'+this.toThemeProperty("jqx-validator-hint-arrow")+'"></div>');this.rtl&&d.indexOf("left")>=0&&(d="right"),this.rtl&&d.indexOf("right")>=0&&(d="left"),c.children(".jqx-validator-hint-arrow").remove(),c.append(h);var i=h.outerHeight(),j=h.outerWidth(),k=c.outerHeight(),l=c.outerWidth();this._addImage(h),g=d.indexOf("top")>=0?k-i:d.indexOf("bottom")>=0?-i:(k-i)/2-i/2,d.indexOf("center")>=0?f=(l-j)/2:d.indexOf("left")>=0?f=l-j/2-1:d.indexOf("right")>=0&&(f=-j/2),(d.indexOf("topright")>=0||d.indexOf("bottomright")>=0)&&(f=0),(d.indexOf("topleft")>=0||d.indexOf("bottomleft")>=0)&&(f=l-j),h.css({position:"absolute",left:f,top:g})},_addImage:function(a){var b=a.css("background-image");b=b.replace('url("',""),b=b.replace('")',""),b=b.replace("url(",""),b=b.replace(")",""),a.css("background-image","none"),a.append('<img src="'+b+'" alt="Arrow" style="position: relative; top: 0px; left: 0px; width: '+a.width()+"px; height: "+a.height()+'px;" />')},_raiseEvent:function(b,c){var d=a.Event(this._events[b]);return d.args=c,this.host.trigger(d)},propertyChangedHandler:function(a,b,c,d){"rules"===b&&(this._configureInputs(),this._removeEventListeners(),this._addEventListeners())}})}(jqxBaseFramework);
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
7

mercurial