ÎÒÖªµÀµÄJavaScript -- Éè¼ÆÄ£Ê½(ÇŽÓ)Ó¦ÓÃÖ® ¨C ÑéÖ¤Æ÷
Òý×Ó:
Ê×ÏÈÇë¸÷λͬѧ¸úÎÒÀ´Ò»Æð¸´Ï°Éè¼ÆÄ£Ê½ÖеÄÇŽÓģʽ(Bridge), ·Ï»°²»¶àÑÔ±íÖ±½ÓÉÏͼ:
ÔÚÕâ¸öÉè¼ÆÄ£Ê½ÖÐÎÒÃǵijéÏóÀàºÍʵÏÖÀà¿ÉÒÔ¸÷×Ô½øÐÐÀ©Õ¹ºÍ·â×°ÕâÑù¾Í¿ÉÒÔ¶ÔËüÃǽøÐÐÍÑñî, ͨ¹ý×éºÏÀ´²úÉúºÜ¶à±ä»¯¡£ÕâÖÖ˼ÏëÒ²·ûºÏ¡°ÉÙÓü̳Ð,¶àÓÃ×éºÏ¡±µÄÉè¼ÆÔÔò.ÔÚÇŽÓģʽÖÐÎÒÃÇ¿ÉÒÔÓÃAbstraction ÀàÀ´¶ÔʵÏÖÀà(ConreteImplementor)ºÍÐÞÕý³éÏó»¯Àà(RefinedAbstraction)½øÐÐÇŽӡ£µ«JavaScript ÈçºÎʵÏÖÇŽÓÄØ£¿Please follow me
//ValidationÀà: view plain Validation= { required: function(elem) { return!$(elem).val().trim().isNullOrEmpty(); }, email: function(elem) { returnValidation.regexValidator($(elem).val().trim(),Validation.Regex.email); }, regexValidator: function(elemVal, /*string*/regex,) { if(!elemVal.isNullOrEmpty() && !(elemVal.match(regex, "\g"))) { returnfalse; } else{ returntrue; }; }, Regex: { email:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)?$/ } }; Validation.validateColl= { 'jq-validation-required': {validFunc:Validation.required, ErrMsg: 'Required'}, 'jq-validation-email': {validFunc:Validation.email, ErrMsg: 'Invalid email address'} }; ValidatorÀà: view plain29 (function () { varvalidator_elements_blur_selector = 'input[type="text"]'; varvalidator_elements_change_selector = 'select,input[type="hidden"]'; var validator_elements_selector =validator_elements_blur_selector + ',' +validator_elements_change_selector; Validator = function(validateScopeSelector) { this._validateColl= $.extend(true, {}, Validation._validateColl); this._validateDom= $(validateScopeSelector); vartheValidator = this; this._validateDom.delegate(validator_elements_blur_selector,'blur',function() { theValidator.validateInput(this, 'blur'); }); this._validateDom.delegate(validator_elements_change_selector,'change', function() { varinputValidated = theValidator.validateInput(this,'change'); }); }; Validator.prototype = { validate: function() { varvalidated = true; vartheValidator = this; $(validator_elements_selector, this._validateDom).each(function() { if(!theValidator.validateInput.call(theValidator, this)) { validated = false; }; }); returnvalidated; }, validateInput: function(elem, event) { varinput = $(elem); varclassArr = input.attr('class').split(''); varvalidated = true; varinValidTable = new Hashtable(); for(var i = 0; i < classArr.length; i++) { varclassItem = classArr[i]; if(!classItem.startWith('jq-validation')) continue; varvalidateItem = this._validateColl[classItem]; if(validateItem && validateItem.validFunc) { if(!validateItem.validFunc(input, validateItem)) { validated = false; if (!strPopupErr.isNullOrEmpty()) { strPopupErr += ""; } inValidTable.add(classItem, validateItem); } } } returnvalidated; } }; })(); //µ÷ÓÃÀý×Ó: <html> <div id="validation_region"> < input type="text"class="jq-validation-required"/> < input type="text"class="jq-validation-email"/> </div> < input type="button"onclick="submit()"/> <script language="javascript"type="text/javascript"> var validator = new Validator("#validation_region"); function submit(){ if(validator.validate()){ alert('Ñé֤ͨ¹ý!'); }else{ alert('Ñé֤ʧ°Ü!'); } } </script> </html>
½âÊÍ:
1.Éè¼ÆË¼Ïë
ÆäÖÐValidation ¿ÉÒÔ¶¨ÒåºÍÀ©Õ¹¸÷ÖÖÑéÖ¤¹æÔòµÄ·½·¨£¬¶øValidatorÔò¸ºÔð´¦ÀíÑéÖ¤ºóµÄ´íÎóÌáʾÒÔ¼°ÈçºÎÕýÈ··´À¡¸ø´úÂëµ÷ÓÃÕßÊÇ·ñÑé֤ͨ¹ý, Validation.validateCollÔò¶¨ÒåÁËÄÄÖÖÀàÐ͵ÄÑéÖ¤µ÷ÓÃÄÄÒ»¸öÑéÖ¤¹æÔòµÄ´¦Àí·½·¨£¬ËûÃǸ÷×Ô·Ö¹¤Ã÷È·£¬ÕâÒ²·ûºÏµ¥Ò»Ö°ÔðµÄÉè¼ÆÔÔò¡£ÒÔÉÏ´úÂëÖÐÎÒÃÇ¿ÉÒÔ¿´µ½Validation ¶ÔÏóÊÇʵÏÖÀà,¶øValidator ¶ÔÏóÊÇÐÞÕý³éÏó»¯Àà, ¶øValidation.validateCollÔòÊÇÇŽӯ÷(ÔÚ¾µäµÄGof 23ģʽÖÐûÓÐÕâ¸ö¶¨Òå)¡£µ±È»ÔÚÕâÀïÎÒÃÇÒѾ²»ÄÜÍêÈ«°´ÕÕÉè¼ÆÄ£Ê½Öж¨ÒåµÄÊõÓïÀ´ÃèÊöÒÔÉÏ´úÂëÁË¡£ÎÒÃÇÖ»Êǰ´ÕÕÉè¼ÆÄ£Ê½µÄ˼·ºÍÀíÄîÀ´Éè¼ÆºÍ¹¹ÔìÎÒÃǵĴúÂë¡£
2.¹¤×÷ÔÀí
ÔÚµ÷ÓõÄÀý×ÓÖÐ:
var validator = newValidator("#validation_region");
µ±Ò³Ãæ¼ÓÔØÍê³ÉºóÎÒÃÇÊ×ÏÈʵÀý»¯Validator¶ÔÏó²¢´«ÈëÐèÒªÑéÖ¤µÄ·¶Î§(Scope), ÔÚÕâÀïÎÒÃÇ´«ÈëÐèÒªÑéÖ¤ÇøÓòµÄID, ÎÒÃÇÀûÓÃjQueryµÄ$() ·½·¨À´°ÑÑ¡Ôñ·û¡°#validation_region"ת»»³É¿É²Ù×÷µÄDOM¶ÔÏó.
µ±Button µã»÷ʱÎÒÃǵ÷ÓÃsubmit·½·¨£¬ÕâʱִÐÐvalidator.validate ·½·¨£¬Õâ¸ö·½·¨»áÀûÓÃjQueryµÄeach·½·¨±éÀúÑéÖ¤·¶Î§ÄÚµÄËùÓÐinput ¿Ø¼þ½øÐÐÑéÖ¤£¬²¢×îÖÕ·µ»ØÑéÖ¤µÄ½á¹û¡£
ÔÚValidateµÄÄÚ²¿·½·¨ÖÐÎÒÃÇ»¹¿ÉÒÔ¼ÓÈëµ±Ñé֤δͨ¹ýʱ¶Ôinput ½øÐиıäÑùʽ²¢´íÎóÌáʾµÄ¹¦ÄÜ£¬Ò»°ã×÷·¨ÊÇÔÚinput¼ÓÉϺìÉ«µÄ±ß¿òÒÔÌáʾÓû§£¬ÔÚÕâÀïÕâ¸ö¹¦ÄÜÐèÒª¶ÁÕ߸ù¾ÝÏîÄ¿µÄÐèÇó×Ô¼º½øÐÐÀ©Õ¹ÁË.
3.À©Õ¹ÑéÖ¤¹æÔò
Ç°ÃæÎÒÃǽ²½âÁËÉè¼ÆË¼ÏëÒÔ¼°¹¤×÷ÔÀí£¬ÄÇôÎÒÃÇÈçºÎ¶Ôvalidation ½øÐÐÀ©Õ¹ÄØ£¿
ÎÒÃÇÖ»ÐèÒªÔö¼ÓеÄÑéÖ¤¹æÔò·½·¨µ½Validation¶ÔÏóÉÏ£¬²¢ÔÚValidation.validateColl ¶ÔÑéÖ¤ÀàÐÍ(input µÄclass Ãû)ºÍеÄÑéÖ¤¹æÔò½øÐÐÇŽӡ£
ÀýÈç:
Èç¹ûÎÒÃÇÒª¼ÓÈëÒ»¸öÑéÖ¤ÊÇ·ñÊÇÊý×ֵĹæÔò£¬ÎÒÃÇÐèÒªÔÚValidation ¶ÔÏóÖмÓÈë
number:function (elem) {
return!isNaN($(elem).val());
}
²¢ÔÚValidation.validateCollÖмÓÈë
'jq-validation-number': { validFunc:Validation.number, ErrMsg: 'Notnumber¡¯ }
ÕâʱÎÒÃDz¢²»ÐèÒª¸ü¸ÄÈκÎValidatorµÄ´úÂë¾Í¿ÉÒÔÔÚinput µÄclassÖмÓÈ롯jq-validation-number¡¯ À´½øÐÐÊý×Ö¹æÔòÑéÖ¤ÁË¡£
ÕâÀïÐèҪ˵Ã÷Ò»µãÈç¹ûÐèÒª¶ÔÒ»¸öinput ½øÐжàÖÖÑéÖ¤¹æÔò¿ÉÒÔÔÚclassÖÐÒÔ¿Õ¸ñ·Ö¸îдÈë¶àÖÖÑéÖ¤¹æÔòµÄÃû³Æ
ÀýÈç:
<input type="text" class="jq-validation-requiredjq-validation-number"/>
ÍÆ¼öÐÅÏ¢
- jqueryʵÏÖÍøÕ¾Í¼Æ¬ÀÁ¼ÓÔØ´úÂë
- jQuery Tooltips²å¼þ
- jQueryµÄ.bind()¡¢.live()ºÍ.delegate(....
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- Ä㲻ϲ»¶»ðºü£¬µ«ÓÖϲ»¶firebug£¬ÄǾ͸úÎÒÒ»ÆðÀ´ÔÚIEÉÏ....
- ¸ù¾ÝÏÔʾÆ÷·Ö±æÂʵ÷ÕûÒ³ÃæÏÔʾµÄJavascript½Å±¾
- jQuery дµÄ·ÂÐÂÀË΢²© ÏòϹö¶¯Ð§¹û¡¾×ªÔØ¡¿
- ͨÓõÄJqueryÑ¡ÔñÆ÷
- jQuery ½áºÏ Json Ìá½»Êý¾Ýµ½Webservice£¬....
- ×ÔÖÆjQueryÖÇÄÜÌáʾ²å¼þһö
ÈÈÃÅÐÅÏ¢
- nohup: redirecting stderr to stdou....
- ʹÓÃlog_formatΪNginx·þÎñÆ÷ÉèÖøüÏêϸµÄÈÕÖ¾¸ñʽ
- jquery easyUI--dataGrid-Json
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- ÀûÓÃKeepalived+mysql¹¹½¨¸ß¿ÉÓÃMySQLË«Ö÷×Ô¶....
- Nginx+keepalivedʵÏÖ¸ºÔؾùºâºÍË«»úÈȱ¸¸ß¿ÉÓÃ
- jqueryʵÏÖÒ³Ãæ¼ÓÔØ½ø¶ÈÌõ
- Rolling cURL: PHP²¢·¢×î¼Ñʵ¼ù
- codeigniter ·ÓÉÖÕ¼«ÓÅ»¯(url rewrite)
- linuxÏÂÉèÖÃsshÎÞÃÜÂëµÇ¼
×î½ü¸üÐÂ
- js»ñÈ¡srcÖд«µÝµÄ²ÎÊý
- jqueryʵÏÖÍøÕ¾Í¼Æ¬ÀÁ¼ÓÔØ´úÂë
- ÈÃä¯ÀÀÆ÷ÆÁ±ÎµôJavaScriptµÄ³ö´íÌáʾ
- github²»ÄܼÓÔØcss¡¢js½â¾ö°ì·¨
- ÎÒÖªµÀµÄJavaScript -- Éè¼ÆÄ£Ê½(ÇŽÓ)Ó¦ÓÃÖ® ¨C ....
- 15¸öÖµµÃ¿ª·¢ÈËÔ±¹Ø×¢µÄjQuery¿ª·¢¼¼ÇɺÍÐĵÃ
- dz̸JavascriptÃæÏò¶ÔÏó±à³Ì
- JS¼òµ¥¶¯»·â×°
- JavaScript³õѧÕßӦעÒâµÄÆß¸öϸ½Ú
- jQuery Tooltips²å¼þ
ÆÀÂÛ