<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_madwww</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/22585/rss</id><updated>2011-04-20T10:31:51Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/22585/rss"/><entry><id>http://www.cnblogs.com/madwww/archive/2011/04/20/2022630.html</id><title type="text">JSON2.js与Prototype同时使用所出现的bug</title><summary type="text">同时使用JSON2.js和prototype，会导致json方法对于数组对象处理出现错误。解决方案是：使用json2的json方法，但要增加附加函数来修正。json_data = JSON.stringify(outAcctList_groupInfo, function(key, value) {if (typeof this[key] == &amp;#39;object&amp;#39; &amp;amp;&amp;amp; Object.prototype.toString.apply(this[key]) === &amp;#39;[object Array]&amp;#39;) {return this[key];} else </summary><published>2011-04-20T10:32:00Z</published><updated>2011-04-20T10:32:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2011/04/20/2022630.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2011/04/20/2022630.html"/><content type="html">&lt;p&gt;同时使用JSON2.js和prototype，会导致json方法对于数组对象处理出现错误。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;解决方案是：使用json2的json方法，但要增加附加函数来修正。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;json_data = JSON.stringify(outAcctList_groupInfo, function(key, value) {&lt;br /&gt;&amp;nbsp;if (typeof this[key] == 'object' &amp;amp;&amp;amp; Object.prototype.toString.apply(this[key]) === '[object Array]') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;return this[key];&lt;br /&gt;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;return value;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;});&lt;/p&gt;&lt;img src="http://www.cnblogs.com/madwww/aggbug/2022630.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/madwww/archive/2011/04/20/2022630.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/madwww/archive/2011/04/07/js_oop_sample2.html</id><title type="text">JS面向对象应用二(多差异流程的WEB客户端逻辑设计实现)</title><summary type="text">JS面向对象应用二----多差异流程的WEB客户端逻辑设计实现一、问题的提出 随着公司国际化脚步的加快，系统应用的大面积推广，出现了各个分支机构的业务需求差异的情况，尤其以汇款栏目最为明显。 每一个海外分支机构因为其所处的当地监管、以及自身的考虑不同，而导致业务需求不同。界面上最大的不同，主要是因为所选清算系统、清算路径不同，而出现的界面输入要素的不同，包括客户端js联动的不同。 具体来说主要有如下几种情况： 1） 所有分支机构都需要调用的相同代码部分 2) 分支机构之间逻辑实现不同 3) 有些分支机构之间是相同的，而有些分支机构则需要重载 这三条，完全可以套用面向对象的继承、重载、多态的概念</summary><published>2011-04-07T02:44:00Z</published><updated>2011-04-07T02:44:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2011/04/07/js_oop_sample2.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2011/04/07/js_oop_sample2.html"/><content type="html">&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt"&gt;JS&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;面向对象应用二&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 105pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt"&gt;----&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;多差异流程的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt"&gt;WEB&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;客户端逻辑设计实现&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;一、问题的提出&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;随着公司国际化脚步的加快，系统应用的大面积推广，出现了各个分支机构的业务需求差异的情况，尤其以汇款栏目最为明显。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 每一个海外分支机构因为其所处的当地监管、以及自身的考虑不同，而导致业务需求不同。界面上最大的不同，主要是因为所选清算系统、清算路径不同，而出现的界面输入要素的不同，包括客户端js联动的不同。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 具体来说主要有如下几种情况：&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1） 所有分支机构都需要调用的相同代码部分&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2)&amp;nbsp; 分支机构之间逻辑实现不同&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3)&amp;nbsp; 有些分支机构之间是相同的，而有些分支机构则需要重载&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这三条，完全可以套用面向对象的继承、重载、多态的概念。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 第一条就是说的继承，第二、三条就是说的重载与多态。用面向对象的方法来解决绝对是专杀！可是如何实现呢？这里面还是有一定技巧的，下面就是详细的设计情况。&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: black; font-family: 宋体"&gt;二、设计与实现&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;1. &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: black; font-family: 宋体"&gt;唯有&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;OO&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: black; font-family: 宋体"&gt;能解决&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 由于工期原因，加上用JS实现OOP的种种不确定因素，我的第一个方案打算放弃OOP，使用的是下面的简单设计，如图。&lt;/p&gt;&#xD;
&lt;div&gt;&lt;a href="http://122.137.14.1:8080/sites/ICP/DocLib/20103991579031.jpg" target="_blank"&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;img height="203" alt="" src="http://images.cnblogs.com/cnblogs_com/madwww/20103991579031.jpg" width="333" border="0" /&gt;&amp;nbsp; &#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 宋体"&gt;也就是说，我将js，分为公用部分和非公有部分两个文件，非公有js部分每个分行对应一个。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;可是遇到了强大的难题：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1:如何界定公用js，后续范围变化了怎么半？代码如何维护？难道要所有分行都要修改嘛，不可能。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2:如何知道我要调用哪个分行的非公有js？这个倒可以通过后面的方法实现。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3:如何重写公用js里面的js方法？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;也许还有问题，但到此，这个方案也只得放弃。非常的不现实的，维护代价很高，实现难度也不低，外加实现架构乱！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;2.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;事已至此，唯有实现客户端&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;OOP&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;框架了&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp; A. &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;基类的实现&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;使用&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;ProtoType&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;原型实现，并且加入了一个简单的伪名称空间。&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;文件名字&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;remit.0000.js&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;创建一个名称空间&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;BEGIN&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;var&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; sdc;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;if&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; (!sdc) sdc = {};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;else&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;if&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;typeof&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; sdc != &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(42,0,255); font-family: 'Courier New'"&gt;"object"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;throw&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;new&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; Error(&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(42,0,255); font-family: 'Courier New'"&gt;"sdc already exists and is not an object, error at remit.0000.js"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;if&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; (!sdc.RemitBase) sdc.RemitBase=Class.create();&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;创建基类！&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;创建一个名称空间&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;END&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;下面就是给基类增加方法了&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;Object.extend(sdc.RemitBase.prototype, {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; initialize: &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;() {&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;此方法必须有&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; payuseOnChanged: &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;(form, payuseSel, otherField)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 宋体"&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getPayuseInfo:&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;()&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 宋体"&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; feecurrtypeOnChange:&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;(feeObjName){&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currConstrainOnChange(&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(42,0,255); font-family: 'Courier New'"&gt;'*'&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; + feeObjName);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;this&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;.showRemitCurType();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; outAcctOnChangeExtraHandler : &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; () &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;各分行自定义附加函数&lt;/span&gt; &lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;在&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;remitFun&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;里重写就行了&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; outCurrTypeOnChangeExtraHandler : &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; () &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;各分行自定义附加函数&lt;/span&gt; &lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;在&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;remitFun&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;里重写就行了&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conPageInit : &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; () &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;确认页面和&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;OK&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;调用的初始化函数&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 宋体"&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;其他公用方法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;});&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;B. &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;子类的实现&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;我的文件命名规则是&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;remit.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;地区号&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;.js&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;var&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; sdc;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;if&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; (!sdc) sdc = {};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;else&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;if&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;typeof&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; sdc != &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(42,0,255); font-family: 'Courier New'"&gt;"object"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;throw&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;new&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; Error(&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(42,0,255); font-family: 'Courier New'"&gt;"sdc already exists and is not an object, error at remit.js"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;var&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; RemitFun = Class.create();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;Object.extend(RemitFun.prototype, sdc.RemitBase.prototype);&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;继承基类&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;Object.extend(RemitFun.prototype, {&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;覆盖基类的方法，增加自己的方法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; initialize: &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;() {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;// Event Handler for inArea&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inAreaOnChangedHadler : &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; (source)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 宋体"&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conPageInit : &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: rgb(127,0,85); font-family: 'Courier New'"&gt;function&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; () &lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,95); font-family: 宋体"&gt;这里就是覆盖的基类方法。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;});&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;C. &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;多态的实现。这里用了一个小技巧。&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当时想了几天也没想出来，因为js的运行时怎么可能支持多态呢-_-! 但是，我想到了一个替代的方法，就是依托服务器来实现多态！其实就是：应用服务器能够知道此时需要的子类(分行特定js文件)是什么，让它给发送到浏览器就行了！&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 实际上只需要一句代码就解决了。但确实很关键，没有这个伪多态是不行的。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;这句宝贵的代码就是：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: teal; font-family: 'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: rgb(63,127,127); font-family: 'Courier New'"&gt;script&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; &lt;span style="color: rgb(127,0,127)"&gt;type&lt;/span&gt;&lt;span style="color: black"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: rgb(42,0,255)"&gt;"text/javascript"&lt;/span&gt;&lt;/em&gt; &lt;span style="color: rgb(127,0,127)"&gt;src&lt;/span&gt;&lt;span style="color: black"&gt;=&lt;/span&gt;&lt;em&gt;&lt;span style="color: rgb(42,0,255)"&gt;"&lt;/span&gt;&lt;/em&gt;&lt;span style="color: rgb(191,95,63)"&gt;&amp;lt;%=&lt;/span&gt;&lt;u&gt;&lt;span style="color: black"&gt;webpath&lt;/span&gt;&lt;/u&gt;&lt;span style="color: rgb(191,95,63)"&gt;%&amp;gt;&lt;/span&gt;&lt;em&gt;&lt;span style="color: rgb(42,0,255)"&gt;js/pages/remit/remit.&lt;/span&gt;&lt;/em&gt;&lt;span style="color: red"&gt;&amp;lt;icbc:label controlID=&lt;em&gt;"jsFilePathInfo"&lt;/em&gt; /&amp;gt;&lt;/span&gt;&lt;em&gt;&lt;span style="color: rgb(42,0,255)"&gt;.js"&lt;/span&gt;&lt;/em&gt;&lt;span style="color: teal"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(63,127,127)"&gt;script&lt;/span&gt;&lt;span style="color: teal"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: teal; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 宋体"&gt;红色的代码实际上就是地区号了。&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;三、总结&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 至此，汇款的逻辑部分通过以上形式的组织，将他们大部分都装入了&lt;/span&gt;&lt;span style="font-family: 'Courier New'"&gt;js&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;文件。应用了面向对象的方法，实际效果真是出人意料，很不错。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; 消灭了重复代码，提升了复用性。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2.&amp;nbsp;&amp;nbsp;&amp;nbsp; 可维护性高。由于继承方法，使得新增代码变少了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp; 代码的灵活性高，逻辑清晰。&lt;/p&gt;&#xD;
&lt;p style="margin-left: 39pt; text-indent: -18pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;这些优点提升了开发的进度，间接的也减少了出错的几率&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/madwww/aggbug/2007591.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/madwww/archive/2011/04/07/js_oop_sample2.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/madwww/archive/2011/04/07/2007587.html</id><title type="text">JS面向对象应用一(界面分离JS,多语言及校验组件实现)</title><summary type="text">JS面向对象应用一----界面分离JS,多语言及校验组件实现一、多语言实现 海外以前的代码由于有多语言方面的阻碍，一直是jsp和js语言混合编写在同一页面。这样做，第一不符合逻辑分离原则；第二也对带宽造成浪费，不经济。 只要解决了多语言就能实现js可分离。1.1原来的代码形式：//通过utb这个javabean来动态获得多语言翻译if(outAcctNameE.trim().length == 0){ alert(&amp;quot;&amp;lt;%=utb.getJSAlert(&amp;quot;VALID00005&amp;quot;)%&amp;gt;&amp;quot;); //请输入汇款人英文户名 document.frmRe</summary><published>2011-04-07T02:40:00Z</published><updated>2011-04-07T02:40:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2011/04/07/2007587.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2011/04/07/2007587.html"/><content type="html">&amp;nbsp; &#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt"&gt;JS&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;面向对象应用一&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 105pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt"&gt;----&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;界面分离&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt"&gt;JS,&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;多语言及校验组件实现&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;一、多语言实现&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;海外以前的代码由于有多语言方面的阻碍，一直是&lt;/span&gt;jsp&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;js&lt;span style="font-family: 宋体"&gt;语言混合编写在同一页面。这样做，第一不符合逻辑分离原则；第二也对带宽造成浪费，不经济。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;只要解决了多语言就能实现&lt;/span&gt;js&lt;span style="font-family: 宋体"&gt;可分离。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; font-family: 'Times New Roman'"&gt;1.1&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;原来的代码形式：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10.5pt; font-family: 'Times New Roman'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;通过&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 'Times New Roman'"&gt;utb&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;这个&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 'Times New Roman'"&gt;javabean&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;来动态获得多语言翻译&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;if(outAcctNameE.trim().length == 0){&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert("&amp;lt;%=&lt;strong&gt;&lt;span style="color: blue"&gt;utb.getJSAlert&lt;/span&gt;&lt;/strong&gt;("&lt;strong&gt;VALID00005&lt;/strong&gt;")%&amp;gt;");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;请输入汇款人英文户名&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.frmRemitApply.outAcctNameE.focus();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 10.5pt; font-family: 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 10.5pt; font-family: 'Times New Roman'"&gt;&#xD;
&lt;p align="center"&gt;&lt;u&gt;&lt;span style="font-family: 宋体"&gt;代码&lt;/span&gt;&lt;/u&gt;&lt;u&gt;1&lt;/u&gt;&lt;/p&gt;&lt;span&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt"&gt;1.2&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;实现方案：&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;登录后可以取得当前语言的信息，于是只将需要的翻译写在&lt;/span&gt;jsp&lt;span style="font-family: 宋体"&gt;上，并且使用&lt;/span&gt;JSON&lt;span style="font-family: 宋体"&gt;形式组织，其他代码分离到&lt;/span&gt;js&lt;span style="font-family: 宋体"&gt;文件中&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;新代码&lt;/span&gt;jsp&lt;span style="font-family: 宋体"&gt;中：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: #bf5f3f; font-family: 'Courier New'"&gt;&amp;lt;%&lt;/span&gt; &lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"&gt;//&lt;/span&gt;存&lt;u&gt;储所有&lt;/u&gt;的js&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体"&gt;校验提示信息&lt;/span&gt; &lt;span style="font-size: 10pt; color: #bf5f3f; font-family: 'Courier New'"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'"&gt;var&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; myErrMsg = {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputManual:&lt;/span&gt;'&lt;u&gt;&amp;lt;ic&lt;/u&gt;bc:label text="remit_remitApplyinputManual" /&amp;gt;', &lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体"&gt;手工输入&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; saveSampleConfirmTit&lt;u&gt;le:&lt;/u&gt;'&amp;lt;%=&lt;u&gt;utb&lt;/u&gt;.getJSAlert(&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"VALID00035"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;)&lt;/span&gt;&lt;span style="font-size: 10pt; color: #bf5f3f; font-family: 'Courier New'"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;', //&lt;/span&gt;您是否要&lt;u&gt;保存样&lt;/u&gt;本?&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mustAgree:'&lt;/span&gt;&amp;lt;%=&lt;u&gt;utb&lt;/u&gt;.getJSAlert(&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"VALID00025"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;)&lt;/span&gt;&lt;span style="font-size: 10pt; color: #bf5f3f; font-family: 'Courier New'"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;', //&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 宋体"&gt;没&lt;u&gt;有勾选&lt;/u&gt;阅读须知，不能提交。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectProvince:'&lt;/span&gt;&amp;lt;%=&lt;u&gt;utb&lt;/u&gt;.getJSAlert(&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"VALID0132"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;)&lt;/span&gt;%&lt;u&gt;&amp;gt;'&lt;/u&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;在使用的地方直接使用&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;myErrMsg.XXXXXX(&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;例如&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;: myErrMsg.mustAgree)&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;就可以了，通过这个方法，就可以将业务逻辑提取成&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;js&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;文件了。&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;Js&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;文件中的翻译使用&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;myErrMsg&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;对象就可以了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: black; font-family: 宋体"&gt;二、校验组件&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;对于用户的输入是需要校验内容的，其中有很多是相同的逻辑，如校验是否必输并且提示、校验是否是数字并且提示、校验是否是英文等等。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;其调用形式非常类似于上面的&lt;strong&gt;代码&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;1&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: black; font-family: 宋体"&gt;，而我们的业务逻辑经常就是多个这样类似的代码组合而成的校验组合，其最后会返回一个校验结果&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;(True &lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;或&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt; False)&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;这个组件基本上不会有继承和重载的情况出现，所以只需封装一下这些数据和方法即可。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;2.1Validation&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;类的设计&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 宋体"&gt;&lt;img height="297" alt="" src="http://images.cnblogs.com/cnblogs_com/madwww/2010211928194241.jpg" width="232" border="0" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;&lt;a href="http://122.137.14.1:8080/sites/ICP/DocLib/2010211928194241.jpg" target="_blank"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;span style="font-size: 12pt; color: black; font-family: 'Courier New'"&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.2Validation类的实现&lt;/strong&gt;&lt;span style="color: black; font-family: 宋体"&gt;，使用&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;prototype&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;原型继承方式创建类。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;function&lt;/strong&gt; Validation()&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;this&lt;/strong&gt;.res = &lt;strong&gt;true&lt;/strong&gt;; //&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 宋体"&gt;校验成功标志&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="color: black; font-family: 宋体"&gt;校验方法的封装：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;Object.extend(sdc.validation, {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #339966; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: #339966; font-family: 宋体"&gt;弹出错误提示信息并置焦点与控件之上&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;displayInfoAndFocus: &lt;strong&gt;function&lt;/strong&gt;(obj,str,focusId){&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj.res = &lt;strong&gt;false&lt;/strong&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(str);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;if&lt;/strong&gt;($(focusId) != &lt;strong&gt;null&lt;/strong&gt; &amp;amp;&amp;amp; $(focusId).style.display != &lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"none"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; &amp;amp;&amp;amp; !$(focusId).disabled)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(focusId).focus();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #339966; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: #339966; font-family: 宋体"&gt;校验必输项是否输入值了&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;requiredValid: &lt;strong&gt;function&lt;/strong&gt; (elemId,str,focusId){&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;if&lt;/strong&gt;(arguments.length == 2)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; focusId = elemId;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;if&lt;/strong&gt;( &lt;/span&gt;&lt;u&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'"&gt;this&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;.res&lt;/span&gt;&lt;/strong&gt;&lt;/u&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt; &amp;amp;&amp;amp; !($(elemId).value.trim().length &amp;gt; 0) )&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdc.validation.displayInfoAndFocus(&lt;strong&gt;this&lt;/strong&gt;,str,focusId);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;this&lt;/strong&gt;.res;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: #339966; font-family: 宋体"&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;省略其他校验方法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;});&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 宋体"&gt;每一步判断&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;this.res&lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;这个值是一个关键，也就是组合校验的情况下，必须保证前面校验都已经正确了才能进行下面的校验。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: black; font-family: 宋体"&gt;创建类的方法：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;Validation.prototype.requiredValid = sdc.validation.requiredValid;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;Validation.prototype.hasChinese = sdc.validation.hasChinese;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: #339966; font-family: 宋体"&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;省略&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.3使用示例：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;function test(){&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5pt"&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;先&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;new&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;出一个对象&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 4.9pt" align="left"&gt;&lt;strong&gt;var&lt;/strong&gt; valid = &lt;strong&gt;new&lt;/strong&gt; Validation();&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5pt" align="left"&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体"&gt;请输入收款人户名&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5pt" align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;valid.requiredValid(&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"inAcctName"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;, myErrMsg.requiredinAcctName); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5pt" align="left"&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体"&gt;收款人名称最大&lt;/span&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"&gt;136&lt;/span&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体"&gt;个字符&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5pt"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;valid.maxLengthByteValid(&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"inAcctName"&lt;/span&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;, 136 , myErrMsg.maxName); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt" align="left"&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 宋体"&gt;这里是结合使用非组件验证的情况&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt" align="left"&gt;&lt;strong&gt;if&lt;/strong&gt;(valid.res &amp;amp;&amp;amp; $(&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"iAgreeChk"&lt;/span&gt;) != &lt;strong&gt;null&lt;/strong&gt; &amp;amp;&amp;amp; $(&lt;span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'"&gt;"iAgreeChk"&lt;/span&gt;).checked == &lt;strong&gt;false&lt;/strong&gt;)&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt" align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt" align="left"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;&amp;nbsp;alert(myErrMsg.mustAgree);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt" align="left"&gt;valid.res = &lt;strong&gt;false&lt;/strong&gt;;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt"&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New'"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt"&gt;&lt;strong&gt;return&lt;/strong&gt; valid.res;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;三、总结&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;由此页面逻辑可以分离出&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 'Courier New'"&gt;jsp&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;页面形成单独的&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 'Courier New'"&gt;js&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体"&gt;文件，易于维护节约带宽，这里的关键是多语言。校验控件减少了重复代码，使程序更可读，可靠。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/madwww/aggbug/2007587.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/madwww/archive/2011/04/07/2007587.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/madwww/archive/2008/07/01/vs_debug_js.html</id><title type="text">使用VS调试JavaScript</title><summary type="text"/><published>2008-07-01T14:47:00Z</published><updated>2008-07-01T14:47:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2008/07/01/vs_debug_js.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2008/07/01/vs_debug_js.html"/></entry><entry><id>http://www.cnblogs.com/madwww/archive/2008/06/17/splitcontainer_click.html</id><title type="text">解决SplitContainer的Click事件不能正确执行的问题</title><summary type="text"/><published>2008-06-17T13:39:00Z</published><updated>2008-06-17T13:39:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2008/06/17/splitcontainer_click.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2008/06/17/splitcontainer_click.html"/></entry><entry><id>http://www.cnblogs.com/madwww/archive/2008/04/29/software_devlopement_feel.html</id><title type="text">别拿软件不当工程</title><summary type="text"/><published>2008-04-29T14:52:00Z</published><updated>2008-04-29T14:52:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2008/04/29/software_devlopement_feel.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2008/04/29/software_devlopement_feel.html"/></entry><entry><id>http://www.cnblogs.com/madwww/archive/2008/03/20/1115455.html</id><title type="text">IE6 CSS文件注释bug</title><summary type="text"/><published>2008-03-20T14:30:00Z</published><updated>2008-03-20T14:30:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2008/03/20/1115455.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2008/03/20/1115455.html"/></entry><entry><id>http://www.cnblogs.com/madwww/archive/2007/12/27/my_2007_year.html</id><title type="text">我的2007</title><summary type="text">2007年，我走出了朝夕为伴的校园，迈入了社会。</summary><published>2007-12-27T15:51:00Z</published><updated>2007-12-27T15:51:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2007/12/27/my_2007_year.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2007/12/27/my_2007_year.html"/></entry><entry><id>http://www.cnblogs.com/madwww/archive/2007/12/22/html_name_id.html</id><title type="text">关于document.getElementById(ID与Name的区别)</title><summary type="text">对于HTML中的Id和Name。</summary><published>2007-12-22T01:50:00Z</published><updated>2007-12-22T01:50:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2007/12/22/html_name_id.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2007/12/22/html_name_id.html"/></entry><entry><id>http://www.cnblogs.com/madwww/archive/2007/04/26/728886.html</id><title type="text">测试第一帖子</title><summary type="text">测试下。。。</summary><published>2007-04-26T14:05:00Z</published><updated>2007-04-26T14:05:00Z</updated><author><name>暴风雪</name><uri>http://www.cnblogs.com/madwww/</uri></author><link rel="alternate" href="http://www.cnblogs.com/madwww/archive/2007/04/26/728886.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/madwww/archive/2007/04/26/728886.html"/></entry></feed>
