﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/css" href="/style/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>FSherp RSS</title>
    <link>http://qianxun.net</link>
    <description>FSherp聚合资料</description>
    <generator>RainbowSoft Studio Z-Blog 1.6 Final Build 60816</generator>
    <language>zh-CN</language>
    <copyright>Copyright 2008 FSherp.cn Some Rights Reserved.</copyright>
    <pubDate>Fri, 20 Mar 2009 10:48:42 GMT</pubDate>
    <lastBuildDate>Fri, 20 Mar 2009 10:48:42 GMT</lastBuildDate>
    <item>
      <title>ASP.NET MVC 1.0 发布了</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2009/3/4644.shtml</link>
      <pubDate>18 Mar 2009 23:14:43</pubDate>
      <guid>http://qianxun.net/Post/2009/3/4644.shtml</guid>
      <description><![CDATA[<div><p>看到<a href="http://www.cnblogs.com/ibillguo/archive/2009/03/18/1415745.html" target="_blank" fade="11277180" jquery1237389186151="13"><font color="#1a8bc8">Silverlight 3 Beta发布了</font></a>后，听说ASP.NET MVC 1.0发布了，就去<a href="http://www.asp.net/mvc/" target="_blank" jquery1237389186151="14"><font color="#1a8bc8">ASP.NET MVC</font></a>的官方站看了下，果然看到是1.0发布了，下面是下载地址：</p><p><a title="http://go.microsoft.com/fwlink/?LinkId=144444" href="http://go.microsoft.com/fwlink/?LinkId=144444" target="_blank" fade="11277286" jquery1237389186151="15"><font color="#1a8bc8">http://go.microsoft.com/fwlink/?LinkId=144444</font></a></p><p>下面是ASP.NET MVC的在线文档：</p><p><a href="http://go.microsoft.com/fwlink/?LinkId=145989" target="_blank" fade="11277297" jquery1237389186151="16"><font color="#1a8bc8">http://go.microsoft.com/fwlink/?LinkId=145989</font></a></p><p>&nbsp;</p><p>看了下Release Notes(带目录才6页)，基本和RC2没啥变化。</p><p>已知下面的Visual Studio add-ins 会和MVC的安装程序有冲突：</p><p>&middot; PowerCommands</p><p>&middot; Clone Detective</p><p>&middot; Azure Tools</p><p>可以下载下面的Hotfix修复</p><p><strong><a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=16827&amp;wa=wsignin1.0" fade="11277311" jquery1237389186151="17"><font color="#1a8bc8">https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=16827&amp;wa=wsignin1.0</font></a></strong></p><p>&nbsp;</p><p>经过5个preview和2个RC后，好不容易终于发了1.0，可喜可贺，哈哈&hellip;</p><p>下面是一些资源：</p><p><a href="http://www.cnblogs.com/QLeelulu/archive/2008/07/02/1233836.html" target="_blank" jquery1237389186151="18"><font color="#1a8bc8">ASP.NET MVC 文章推荐</font></a></p><p><a href="http://www.cnblogs.com/QLeelulu/archive/2008/10/05/1303997.html" target="_blank" jquery1237389186151="19"><font color="#1a8bc8">ASP.NET MVC 入门系列教程</font></a>(基本是Preview5的，和正式版有一点点出入)</p><p>重典的教程：</p><p><a href="http://www.cnblogs.com/chsword/archive/2008/03/10/dotnetmvcframework.html" target="_blank" fade="11276710" jquery1237389186151="20"><font color="#1a8bc8">Asp.net Mvc Framework 系列</font></a></p><p><a href="http://www.cnblogs.com/chsword/archive/2008/09/29/aspnetmvc_video.html" target="_blank" jquery1237389186151="21"><font color="#1a8bc8">Asp.net Mvc 入门视频教程（试水）</font></a></p><p><a href="http://www.cnblogs.com/JeffreyZhao/" target="_blank" jquery1237389186151="22"><font color="#1a8bc8">老赵</font></a>的视频教程：<a href="http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/MVC.aspx" target="_blank" fade="11277323" jquery1237389186151="23"><font color="#1a8bc8">http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/MVC.aspx</font></a></p><p><a title="http://www.cnblogs.com/zhangziqiu/category/177895.html" href="http://www.cnblogs.com/zhangziqiu/category/177895.html" target="_blank" jquery1237389186151="24"><font color="#1a8bc8">从零开始学习ASP.NET MVC</font></a>(未完) by <a href="http://www.cnblogs.com/zhangziqiu/" fade="11277333" jquery1237389186151="25"><font color="#1a8bc8">ziqiu.zhang</font></a></p><p>如果你英文比较好的话，可以直接到<a href="http://www.asp.net/mvc/" target="_blank" jquery1237389186151="26"><font color="#1a8bc8">ASP.NET MVC 官网</font></a>上看，上面有入门教程.</p><p>&nbsp;</p><p>一些ASP.NET MVC可用的模板引擎：</p><ul>    <li><a href="http://mvccontrib.codeplex.com/Wiki/View.aspx?title=Brail&amp;referringTitle=Documentation" jquery1237389186151="27"><font color="#1a8bc8">Brail</font></a></li>    <li><a href="http://mvccontrib.codeplex.com/Wiki/View.aspx?title=NHaml&amp;referringTitle=Documentation" jquery1237389186151="28"><font color="#1a8bc8">NHaml</font></a></li>    <li><a href="http://mvccontrib.codeplex.com/Wiki/View.aspx?title=NVelocity&amp;referringTitle=Documentation" jquery1237389186151="29"><font color="#1a8bc8">NVelocity</font></a></li>    <li><a href="http://mvccontrib.codeplex.com/Wiki/View.aspx?title=XSLT&amp;referringTitle=Documentation" jquery1237389186151="30"><font color="#1a8bc8">XSLT</font></a>    <p>上面的4个都包括在<a href="http://mvccontrib.com/" jquery1237389186151="31"><font color="#1a8bc8">MVC Contrib</font></a>中了</p>    <p>还有我比较喜欢的一个：<a title="http://dev.dejardin.org/" href="http://dev.dejardin.org/" target="_blank" jquery1237389186151="32"><font color="#1a8bc8">Spark</font></a></p>    <p>&nbsp;</p>    <p>一个用于ASP.NET MVC的业务实体验证的开源项目：<a title="xVal" href="http://xval.codeplex.com/" target="_blank" jquery1237389186151="33"><font color="#1a8bc8">xVal</font></a>，介绍见<a href="http://blog.codeville.net/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/" fade="11277396" jquery1237389186151="34"><font color="#1a8bc8">xVal - a validation framework for ASP.NET MVC</font></a>、<a href="http://blog.codeville.net/2009/02/27/xval-08-beta-now-released/" fade="11277403" jquery1237389186151="35" style="background-color: rgb(255,255,186)"><font color="#1a8bc8">xVal 0.8 (Beta) Now Released</font></a>。</p>    </li></ul></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2009-3-20 10:48:42</dc:date.Taken>
    </item>
    <item>
      <title>从丑陋到优雅，让代码越变越美（客户端检测方法思考）</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2009/3/4643.shtml</link>
      <pubDate>18 Mar 2009 0:18:53</pubDate>
      <guid>http://qianxun.net/Post/2009/3/4643.shtml</guid>
      <description><![CDATA[<div><p>大家都知道，客户端检测不单可以让用户获得更好的体验，而且可以通过校验数据大大减少客户端和服务器端的往返次数，减少服务器负担。在这里，小弟打算回顾一下自己在客户端检测方面的学习历程和采用方法，如果大家有什么更好的方法或者建议，欢迎提出来共享！共同进步！</p><p>为了方便举例和说明，先构建一个简单的html页面，如下：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_203037"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_203037"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_203037" class="cnblogs_code_Collapse">html</span><span id="Code_Open_Text_203037"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">html&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://www.w3.org/1999/xhtml&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">JS&nbsp;Verify</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">请输入用户名,年龄和自我介绍:</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">用户名:</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text&quot;</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">=&quot;txtName&quot;</span><span style="color: #ff0000">&nbsp;size</span><span style="color: #0000ff">=&quot;20&quot;</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">年龄:</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;text&quot;</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">=&quot;txtAge&quot;</span><span style="color: #ff0000">&nbsp;size</span><span style="color: #0000ff">=&quot;5&quot;</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">岁</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">自我介绍:</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">textarea&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;txtIntro&quot;</span><span style="color: #ff0000">&nbsp;rows</span><span style="color: #0000ff">=&quot;10&quot;</span><span style="color: #ff0000">&nbsp;cols</span><span style="color: #0000ff">=&quot;50&quot;</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">textarea</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;button&quot;</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">=&quot;提交信息&quot;</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></span></div><p>&nbsp;</p><p>第一阶段是：续项强写</p><p>每个人都基本会经过这个阶段，就是对检测内容每个都手工校验。很惭愧，自己也写过不少这样的代码。。这个阶段的代码如下：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_203155"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_203155"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_203155" class="cnblogs_code_Collapse">Code1</span><span id="Code_Open_Text_203155"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;SubmitInfo()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;age&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;intro&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(name&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;name.value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入用户名!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">/</span><span style="color: #000000">^[\u4E00-\u9FA5a-z0-9_]*$</span><span style="color: #000000">/</span><span style="color: #000000">gi.test(name.value))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">用户名只能由中文,英文,数字及下划线组成!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(age&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;age.value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入年龄!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">/</span><span style="color: #000000">^[1-9]\d$</span><span style="color: #000000">/</span><span style="color: #000000">.test(age.value))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">年龄必须为正整数!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(intro&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;intro.value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入自我介绍!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交成功!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;</p><p>&nbsp;</p><p>不评价这个了。。因为每个人都可能因为写这些方法检测逻辑写得眼冒星星手抽筋的！弄的经常下班了还在扑哧扑哧的写啊写。。。。</p><p>&nbsp;</p><p>第二阶段：集中消灭</p><p>相信不少初学者现在还是处于这个阶段，这阶段的同学们已经被第一阶段折磨怕了。很快就想出了集中消灭相同类型检测的方法。就是写检测函数，如下：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_203922"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_203922"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_203922" class="cnblogs_code_Collapse">Code2</span><span id="Code_Open_Text_203922"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;isEmpty(obj)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(obj&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;obj.value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}<br /><br /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;isInt(val)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">^[1-9]\d$</span><span style="color: #000000">/</span><span style="color: #000000">.test(val);<br />}<br /><br /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;isSafeString(val)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">^[\u4E00-\u9FA5a-z0-9_]*$</span><span style="color: #000000">/</span><span style="color: #000000">gi.test(val);<br />}</span></span></div><p>&nbsp;</p><p>同学们很可能还将上边代码独立成一个公共类，叫Common.js什么的，然后实际检测引用一下，就容易多了：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_204047"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_204047"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_204047" class="cnblogs_code_Collapse">Code3</span><span id="Code_Open_Text_204047"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;SubmitInfo()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;age&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;intro&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">isEmpty(name))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入用户名!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">isSafeString(name.value))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">用户名只能由中文,英文,数字及下划线组成!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">isEmpty(age))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入年龄!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">isInt(age.value))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">年龄必须为正整数!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">isEmpty(intro))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入自我介绍!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交成功!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;</p><p>看，不用每次写那些该死检测逻辑了。。要检测什么只要调用一下已经写好的公共检测方法就行了。轻松吧？！不过，还能更轻松吗？当然！请看：</p><p>&nbsp;</p><p>第三阶段：链式的威力</p><p>看着一大堆if else总是心里觉得不舒服，对吧？一串串的又不是羊肉串，虽然不能吃，也要消灭它们！这时候，是 的prototype出场的时候了。通过扩展prototype，可以获得简洁优雅的代码：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_204652"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_204652"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_204652" class="cnblogs_code_Collapse">Code4</span><span id="Code_Open_Text_204652"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;SubmitInfo()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;age&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;intro&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">name.value.initVerify().isEmpty(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入用户名!</span><span style="color: #000000">&quot;</span><span style="color: #000000">).isSafeString(</span><span style="color: #000000">&quot;</span><span style="color: #000000">用户名只能由中文,英文,数字及下划线组成!</span><span style="color: #000000">&quot;</span><span style="color: #000000">).verifyComplete())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">age.value.initVerify().isEmpty(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入年龄!</span><span style="color: #000000">&quot;</span><span style="color: #000000">).isInt(</span><span style="color: #000000">&quot;</span><span style="color: #000000">年龄必须为正整数!</span><span style="color: #000000">&quot;</span><span style="color: #000000">).verifyComplete())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">intro.value.initVerify().isEmpty(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入自我介绍!</span><span style="color: #000000">&quot;</span><span style="color: #000000">).verifyComplete())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交成功!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;</p><p>很简洁吧?相对前边一大串的羊肉串，是不是顺眼多了啊？哦，如何实现？其实很简单：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_204829"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_204829"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_204829" class="cnblogs_code_Collapse">Code5</span><span id="Code_Open_Text_204829"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;validateStatus;<br /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;validateMessage;<br /><br />String.prototype.initVerify&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;validateStatus&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;validateMessage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">;<br />}<br /><br />String.prototype.isEmpty&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(msg)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(validateStatus)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validateStatus&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validateMessage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;msg;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">;<br />}<br /><br />String.prototype.isInt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(msg)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(validateStatus)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">/</span><span style="color: #000000">^[1-9]\d$</span><span style="color: #000000">/</span><span style="color: #000000">.test(</span><span style="color: #0000ff">this</span><span style="color: #000000">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validateStatus&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validateMessage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;msg;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">;<br />}<br /><br />String.prototype.isSafeString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(msg)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(validateStatus)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">/</span><span style="color: #000000">^[\u4E00-\u9FA5a-z0-9_]*$</span><span style="color: #000000">/</span><span style="color: #000000">gi.test(</span><span style="color: #0000ff">this</span><span style="color: #000000">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validateStatus&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validateMessage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;msg;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">;<br />}<br /><br />String.prototype.verifyComplete&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">validateStatus)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(validateMessage);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;validateStatus;<br />}</span></span></div><p>&nbsp;</p><p>怎么样？是不是很简单啊？这个prototype真是一个好东西啊！！链式编程，赞！！呵呵，怎么？你还不满足，代码太长？人心不足啊。我试试吧。。</p><p>第四阶段：自定义属性</p><p>这个阶段的提交函数如下：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_205540"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_205540"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_205540" class="cnblogs_code_Collapse">Code6</span><span id="Code_Open_Text_205540"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;SubmitInfo()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">Verify(document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">)))&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">Verify(document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">)))&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">Verify(document.getElementById(</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">)))&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交成功!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;</p><p>想不通吧？怎么所有检测都一样啊？这不忽悠人吗？哈哈，要实现这个需要在html代码加点酱料：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_205729"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_205729"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_205729" class="cnblogs_code_Collapse">Code7</span><span id="Code_Open_Text_205729"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">请输入用户名,年龄和自我介绍:</span><span style="color: #000000">&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">用户名:</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">text</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;size</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">20</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;verifyOptions</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">{&quot;Empty&quot;:{&quot;Flag&quot;:false,&quot;Message&quot;:&quot;请输入用户名!&quot;},&quot;SafeString&quot;:{&quot;Message&quot;:&quot;用户名只能由中文,英文,数字及下划线组成!&quot;}}</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">年龄:</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">text</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;size</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">5</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;verifyOptions</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">{&quot;Empty&quot;:{&quot;Flag&quot;:false,&quot;Message&quot;:&quot;请输入年龄!&quot;},&quot;Int&quot;:{&quot;Message&quot;:&quot;年龄必须为正整数!&quot;}}</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;岁&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">自我介绍:</span><span style="color: #000000">&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">textarea&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;rows</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">10</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;cols</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">50</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;verifyOptions</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">{&quot;Empty&quot;:{&quot;Flag&quot;:false,&quot;Message&quot;:&quot;请输入自我介绍!&quot;}}</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">textarea&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">button</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">return&nbsp;SubmitInfo();</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交信息</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">/</span><span style="color: #000000">div&gt;</span></span></div><p>&nbsp;</p><p>看到了吧，我们自定义了个叫verifyOption的属性，就是根据它们实现的分别对待的。就好像每个人都有银行卡，但是里面的钱都不一样一样（这个比喻好像比较牵强^_^）</p><p>还是看看Verify函数到底干了什么东西吧：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_210028"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_210028"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_210028" class="cnblogs_code_Collapse">Code8</span><span id="Code_Open_Text_210028"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Verify(obj)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(obj.attributes[</span><span style="color: #000000">&quot;</span><span style="color: #000000">verifyOptions</span><span style="color: #000000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;undefined)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">请定义verifyOptions!</span><span style="color: #000000">&quot;</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;options&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;obj.attributes[</span><span style="color: #000000">&quot;</span><span style="color: #000000">verifyOptions</span><span style="color: #000000">&quot;</span><span style="color: #000000">].nodeValue;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">options.isEmpty(</span><span style="color: #000000">&quot;</span><span style="color: #000000">检测参数不正确!</span><span style="color: #000000">&quot;</span><span style="color: #000000">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;options.parseJSON();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options.Empty&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;options.Empty.Flag&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">obj.value.isEmpty(options.Empty.Message))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options.Int&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">obj.value.isInt(options.Int.Message))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options.SafeString&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">obj.value.isSafeString(options.SafeString.Message))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;</p><p>就是检测自定义属性里面的设置，根据设置来进行相应检测。这下大家满足了吧？每次检测都一律一句Verify(*)就搞掂了！！QA的MM说检测不对？哦，不用急不用急，修改一下自定义属性verifyOption就好了。哈哈~~~</p><p>第五阶段：可配置</p><p>怎么还有第五阶段？疯狂了疯狂了~~（小子去死！！番茄，鸡蛋都丢上来了~~）唉，大家要注意文明礼貌嘛，丢着我没有关系，丢着花花草草也不好嘛。</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_210748"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_210748"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_210748" class="cnblogs_code_Collapse">Code9</span><span id="Code_Open_Text_210748"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">&lt;</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">请输入用户名,年龄和自我介绍:</span><span style="color: #000000">&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">用户名:</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">text</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;size</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">20</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">年龄:</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">text</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;size</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">5</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;岁&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">自我介绍:</span><span style="color: #000000">&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">textarea&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;rows</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">10</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;cols</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">50</span><span style="color: #000000">&quot;</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">textarea&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">span</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">input&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">btnSubmit</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">button</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交信息</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;</span><span style="color: #000000">/</span><span style="color: #000000">div&gt;</span></span></div><p>&nbsp;</p><p>第五阶段的html代码已经回复清爽了，毕竟自定义属性好像不太友善，不标准！既然不标准就放弃吧！是不是有同学怀疑，这样检测函数岂不是要写更对逻辑，一定比较臃肿吧？好吧，大家看检测函数：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_211047"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_211047"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_211047" class="cnblogs_code_Collapse">Code10</span><span id="Code_Open_Text_211047"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;SubmitInfo()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">VerifyComplete())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">&quot;</span><span style="color: #000000">提交成功!</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;</p><p>不是吧？？骗人的吧？但是，事实如此，第五阶段就是这样简洁，这样优雅的实现了和上边几个阶段同样的功能。不相信，那就来看看吧！不过，第五阶段为了方便，引用了JQuery，找东西，它的搜索器还真好用。</p><p>这个阶段我们的检测配置都写到一个变量里面了：</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_211419"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_211419"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_211419" class="cnblogs_code_Collapse">Code11</span><span id="Code_Open_Text_211419"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;verifyConfig&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[<br />{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Id</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtName</span><span style="color: #000000">&quot;</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">Option</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Empty</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Flag</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #0000ff">false</span><span style="color: #000000">,</span><span style="color: #000000">&quot;</span><span style="color: #000000">Message</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入用户名!</span><span style="color: #000000">&quot;</span><span style="color: #000000">},</span><span style="color: #000000">&quot;</span><span style="color: #000000">SafeString</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Message</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">用户名只能由中文,英文,数字及下划线组成!</span><span style="color: #000000">&quot;</span><span style="color: #000000">}}},<br />{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Id</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtAge</span><span style="color: #000000">&quot;</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">Option</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Empty</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Flag</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #0000ff">false</span><span style="color: #000000">,</span><span style="color: #000000">&quot;</span><span style="color: #000000">Message</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入年龄!</span><span style="color: #000000">&quot;</span><span style="color: #000000">},</span><span style="color: #000000">&quot;</span><span style="color: #000000">Int</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Message</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">年龄必须为正整数!</span><span style="color: #000000">&quot;</span><span style="color: #000000">}}},<br />{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Id</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">txtIntro</span><span style="color: #000000">&quot;</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">Option</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Empty</span><span style="color: #000000">&quot;</span><span style="color: #000000">:{</span><span style="color: #000000">&quot;</span><span style="color: #000000">Flag</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #0000ff">false</span><span style="color: #000000">,</span><span style="color: #000000">&quot;</span><span style="color: #000000">Message</span><span style="color: #000000">&quot;</span><span style="color: #000000">:</span><span style="color: #000000">&quot;</span><span style="color: #000000">请输入自我介绍!</span><span style="color: #000000">&quot;</span><span style="color: #000000">}}}];&nbsp;</span></span></div><p>&nbsp;</p><p>这个变量我叫配置变量，建议大家将这些变量都放到同一个文件，叫verifyConfig.js？反正我是这么叫的，要修改检测逻辑，就修改这个配置文件就好了，当然，例子由于要强调第五阶段的简洁，就将<span style="color: #000000">VerifyComplete()函数参数设置为空，其实它应该有一个参数，用来传入设置变量。这样才通用。</span></p><p><span style="color: #000000">最后奉上VerifyComplete()函数：</span></p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_211925"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_211925"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" alt="" /><span id="Code_Closed_Text_211925" class="cnblogs_code_Collapse">Code12</span><span id="Code_Open_Text_211925"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;VerifyComplete()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;controls&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;$(</span><span style="color: #000000">&quot;</span><span style="color: #000000">:input</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;verifyFlag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;$.each(controls,&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(i,&nbsp;n)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(verifyFlag)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verifyFlag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Verify(n);<br />&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;verifyFlag;<br />}<br /><br /><br /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Verify(obj)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;options;<br />&nbsp;&nbsp;&nbsp;&nbsp;$.each(verifyConfig,&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(i,&nbsp;n)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(n.Id&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;obj.id)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n.Option;<br />&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;undefined)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options.Empty&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;options.Empty.Flag&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">obj.value.isEmpty(options.Empty.Message))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options.Int&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">obj.value.isInt(options.Int.Message))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(options.SafeString&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">obj.value.isSafeString(options.SafeString.Message))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}</span></span></div><p>&nbsp;进入第六阶段。第六阶段是怎么样？我还真想不到！</p></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2009-3-20 10:48:42</dc:date.Taken>
    </item>
    <item>
      <title>silverlight 试用</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2009/3/4642.shtml</link>
      <pubDate>6 Mar 2009 23:52:00</pubDate>
      <guid>http://qianxun.net/Post/2009/3/4642.shtml</guid>
      <description><![CDATA[<div><font size="2">&nbsp;&nbsp;经过漫长的等待，近日，微软终于发布了Silverlight 2的正式版本。Silverlight 2正式版的发布不仅让微软有了更多和Flash叫板的机会，同时也将RIA(Rich Internet Applications，丰富互联网应用程序)开发技术推向了一个新的时代。今天我们就来感受一下Silverlight的光芒! </font></div><div>这段时间，利用业余时间，看了一下最近讨论得沸沸扬扬的SILVERLIGHT。</div><div>并试用了一下做一个小小的实验，点击首页右边的 <a href="http://qianxun.net/Silverlight/default.html">silverlight版</a></div><div>试用感受如下：</div><div><p><font color="#000000"><font size="2">　　<strong>一、走近Silverlight</strong></font></font></p><p><font color="#000000" size="2">　　从2005年秋初现Silverlight(银光)技术，到2008年10月发布2.0正式版，Silverlight已经走过了整整三个年头。这个被微软乃至国内外众多网络公司大力推崇的技术，目前微软已经和150个合作伙伴结成联盟，Silverlight到底深藏了何种魅力?下面我们来探个究竟。</font></p><p align="center"><font color="#000000" size="2"><img alt="" src="http://www.diggsoft.com/uploads/allimg/081104/1009320.jpg" /></font></p><p class="pictext" align="center"><font color="#000000" size="2">Microsoft Silverlight</font></p><p><font color="#000000" size="2">　　1.Silverlight是什么？</font></p><p><font color="#000000" size="2">　　究竟什么是Silverlight？简单地说，Silverlight就是一个安装简单的、跨浏览器的、跨平台的插件，类似于Flash。用户只要安装该插件，就可以在Windows和Mac平台的主流浏览器中运行相应版本的Silverlight应用程序和服务，比如享受P2P网络电视、视频分享、电子相册、在线游戏、搜索引擎以及其他交互丰富的网络服务等等。未来还很有可能被广泛应用在手机中，比如在Android操作系统和苹果iPhone手机植入Silverlight插件。</font></p><p><font color="#000000" size="2">　　小提示：如何安装Silverlight 2</font></p><p><font color="#000000" size="2">　　要使用采用Silverlight技术的网络服务和应用软件，我们必须事先安装Silverlight插件。安装方法非常简单，双击下载的&ldquo;Silverlight.2.0.exe&rdquo;文件即可进行安装，无需进行过多的设置。</font></p><p align="center"><font color="#000000" size="2"><a href="http://www.diggsoft.com/uploads/userup/0811/04100410QU.jpg" target="_blank"><img border="0" alt="" src="http://www.diggsoft.com/uploads/userup/0811/04100410QU.jpg" width="507" height="234" /></a>&nbsp;</font></p><p class="pictext" align="center"><font color="#000000" size="2">安装Silverlight 2</font></p><p><font color="#000000" size="2">　　2.Silverlight技术优势</font></p><p><font color="#000000" size="2">　　跟Adobe的Flash技术相比，微软的Silverlight技术普及率虽然远远不及Flash，但是有些方面Silverlight技术还是有一定优势的。</font></p><p><font color="#000000" size="2">　　(1)技术开发优势：Silverlight是基于微软.NET Framework开发，对开发者或设计者来说，可以使用C#、VB.NET、 、Ruby、Python等来撰写逻辑程序，采用XHTML、XML、XSLT、CSS及ASP.NET等技术来实现丰富的网页互动体验，而且还支持HTTP、REST、WS*/SOAP、POX、RSS等网络标准。</font></p><p><font color="#000000" size="2">　　(2)Deep Zoom技术：Silverlight 2新增了对Deep Zoom(深度缩放)技术的支持，通过该技术我们在查看高分辨率图片时只将当前显示部分发送到浏览器里而不是全部下载。我们可以通过鼠标滚轮放大缩小图片，通过鼠标左键单击放大图片，可以通过鼠标任意拖动。</font></p><p><font color="#000000" size="2">　　(3)高级内容保护：最新的Silverlight 2支持全新的数字版权管理(DRM)技术&mdash;&mdash;PlayReady，并兼容Windows Media DRM 10。可以有效地保护标准的音频及视频文件、铃声、图片、游戏、墙纸以及其它由运营商售与手机用户的移动内容。</font></p><p><font color="#000000" size="2">　　(4)Windows平台的支持：凭借微软的大背景，未来Silverlight和Windows的结合度将更高，这样可以比较容易的获得更多的用户群。</font></p><p><font color="#000000" size="2">　　随着微软对Silverlight的持续投入，在某些功能方面将陆续缩小和Flash的距离，比如微软将在2009年第一季度推出下一代Silverlight 3.0版本，届时会提供对H.264视频编码和AAC音频编码的支持，从而可以播放高清的Flash视频。</font></p><p><font color="#000000"><font size="2">　　<strong>二、最热门的八大应用</strong></font></font></p><p><font color="#000000" size="2">　　Silverlight技术自发布以来就受到国内外众多网站、软件公司的关注，除了微软发布的Deep Zoom、Livestation、Tafiti等应用软件和服务，国内的百度、淘宝、腾讯等公司也积极的相应。下面我们将挑选目前最热门的八个基于Silverlight技术设计的网络服务，以及开发的应用程序，来体验一下Silverlight技术的魅力。</font></p><p><font color="#000000" size="2">　　应用实例一：图像处理、电子相册</font></p><p><font color="#000000" size="2">　　代表产品：Deep Zoom Composer+PhotoZoom</font></p><p><font color="#000000" size="2">　　产品简介：Deep Zoom技术是由Live Labs研究出的图像显示技术，使用该技术可以对图像进行多种分辨率的缩放，方便用户查看超高清晰度的图片，在最新的Silverlight 2中就包含该技术的应用。Deep Zoom Composer是一款让图片支持Deep Zoom技术的工具，PhotoZoom是微软推出的一个可缩放的电子相册服务，允许用户创建、共享相册。 </font></p><p>&nbsp;</p><p><font color="#000000" size="2">　　试用体会：下面以最新版本的Deep Zoom Composer 0.9.000.5为例，来体验制作Deep Zoom图片的过程。</font></p><p><font color="#000000" size="2">　　小提示：要正常使用Deep Zoom Composer，需要安装Microsoft .NET Framwork 3.5。</font></p><p><font color="#000000" size="2">　　Deep Zoom Composer分三个操作部分：在&ldquo;Import&rdquo;(导入)标签页中可以导入要处理的图片，支持批量导入图片；在&ldquo;Compose&rdquo;(组合)标签页中可以将图片拖入到工作区域，然后对导入的图片进行各种排列；在&ldquo;Export&rdquo;(输出)标签页中可以把经过Deep Zoom处理的图片发送到PhotoZoom电子相册，或者输出为Silverlight项目或图片文件。</font></p><p align="center"><font color="#000000" size="2"><a href="http://www.diggsoft.com/uploads/userup/0811/041005561262.jpg" target="_blank"><img border="0" alt="" src="http://www.diggsoft.com/uploads/userup/0811/041005561262.jpg" width="550" height="390" /></a>&nbsp;</font></p><p class="pictext" align="center"><font color="#000000" size="2">Deep Zoom Composer</font></p><p><font color="#000000" size="2">　　总体来说，Deep Zoom Composer操作比较简单，Deep Zoom的处理能力比较强大，比较适合制作高分辨率的图片库，需要改进的就是增加更多的鼠标效果，比如滚动显示等。</font></p><p><font color="#000000" size="2">　　小技巧：Deep Zoom Composer还有个妙用就是制作全景图，在导入全景图素材图片到工作区域后，选择这些图片，然后点击鼠标右键，在快捷菜单中选择&ldquo;Create panoramic photo&rdquo;来制作。</font></p><p><font color="#000000" size="2">　　在上面，我们说到Deep Zoom Composer制作的Deep Zoom图片可以上传到PhotoZoom相册中，那么我们看看PhotoZoom有什么独特的地方?</font></p><p><font color="#000000" size="2">　　打开http://photozoom.mslivelabs.com/，可以使用Windows Live ID登录。PhotoZoom的功能比较简单，支持JPG格式的图片，支持批量上传，也可以通过RSS/Atom导入图片。因为采用了Silverlight技术，所以在浏览相册的时候可以对图片进行缩放、移动。</font></p><p align="center"><font color="#000000" size="2"><a href="http://www.diggsoft.com/uploads/userup/0811/04100631VB.jpg" target="_blank"><img border="0" alt="" src="http://www.diggsoft.com/uploads/userup/0811/04100631VB.jpg" width="461" height="357" /></a>&nbsp;</font></p><p><font color="#000000" size="2">　　应用实例二：网络电视</font></p><p><font color="#000000" size="2">　　代表产品：Livestation</font></p><p><font color="#000000" size="2">　　产品简介：Livestation是由微软研究小组联手英国一家数字多媒体软件公司Skinkers共同研发的一款P2P网络电视软件，准备和著名的网络电视服务商Joost展开竞争。该产品采用微软的Silverlight技术架构，拥有华丽的播放界面、提供实时的电视节目视频播放。</font></p><p><font color="#000000" size="2">　　试用体会：作为微软进军P2P网络电视市场的产品，Livestation受到广泛的关注。目前还处于测试阶段，不过已经开放注册了，要使用该软件我们首先打开http://beta.livestation.com/，点击页面上方的&ldquo;Sign in&rdquo;注册一个账号，然后点击&ldquo;Download Livestation&rdquo;下载一个软件即可。</font></p><p><font color="#000000" size="2">　　默认情况下，在&ldquo;My Channels&rdquo;(我的频道)中会提供21个频道的节目，包括BBC、DW TV等，缓冲速度比较快，画面比较清晰(图5)，支持高清晰度全屏以及多种画面大小播放，和大名鼎鼎的Joost有得一拼。要想看到更多的电视节目，我们可以在&ldquo;Search&rdquo;(查找)中找，比如CNN，然后点击右侧的&ldquo;Add&rdquo;添加到我的频道中。</font></p><p align="center"><font color="#000000" size="2"><img alt="" src="http://www.diggsoft.com/uploads/allimg/081104/1009322.jpg" /></font></p><p><font color="#000000" size="2">　　</font></p><p class="pictext" align="center"><font color="#000000" size="2">My Channels</font></p><p><font color="#000000" size="2">　　除了高清晰的播放，未来Livestation要获得更多用户，必须增加更多的电视频道，包括中文频道;增加更多的功能，比如定时播放、视频录制等。</font></p><p><font color="#000000" size="2">　　应用实例三：搜索引擎</font></p><p><font color="#000000" size="2">　　代表产品：Tafiti</font></p><p><font color="#000000" size="2">　　产品简介：&ldquo;Tafiti&rdquo;在斯瓦希里语中的意思是&ldquo;研究和搜索&rdquo;，这里的Tafiti是微软推出的将Silverlight技术同Live Search搜索内核相结合的概念搜索站点，目前，支持Images(图片)、News(新闻)、Web(网页)、Halo(游戏)以及Feeds五项基本搜索。</font></p><p><font color="#000000" size="2">　　试用体会：打开Tafiti的主页&mdash;&mdash;http://www.tafiti.com/，我们可以看到一个华丽的UI界面，输入关键词(比如&ldquo;姚明&rdquo;)就可以进行可视化搜索体验，支持Windows Live ID登录。在页面左侧我们可以切换搜索的项目，比如图片、新闻、Feeds等，在中间会显示搜索的结果，如果要收藏搜索结果，还可以拖拽到右侧的收藏夹，最多可以收藏五个内容，比较人性化。 </font></p><p>&nbsp;</p><p><font color="#000000" size="2">　　从具体的搜索功能来看，搜索的结果大部分是Live Search的结果，支持搜索结果过滤。虽然Silverlight 2拥有可缩放图片和平铺Deep Zoom技术，但是Tafiti的图片搜索结果没看到Deep Zoom的影子，跟普通搜索引擎没什么区别。比较实用的倒是右侧的收藏夹功能，我们还可以将收藏到结果发送到Windows Live Spaces，通过Hotmail和朋友分享。</font></p><p align="center"><font color="#000000" size="2"><a href="http://www.diggsoft.com/uploads/userup/0811/04100P1b51.jpg" target="_blank"><img border="0" alt="" src="http://www.diggsoft.com/uploads/userup/0811/04100P1b51.jpg" width="526" height="405" /></a>&nbsp;</font></p><p><font color="#000000" size="2">　　应用实例四：在线音乐</font></p><p><font color="#000000" size="2">　　代表产品：百度音乐抢鲜族</font></p><p><font color="#000000" size="2">　　产品简介：百度采用Silverlight 2开发的在线音乐试听服务，提供了国内很多选秀歌手的最新单曲和最新专辑，还可以参加他们提供的投票和抽奖活动。</font></p><p><font color="#000000" size="2">　　试用体会：打开百度音乐抢鲜族的首页&mdash;&mdash;http://mu-zone.baidu.com/，最吸引人的就是动感十足的用户界面，比如我们可以点击平铺的明星照片，给人气歌手投票，还可以看他们的最新MV参赛作品。在页面右侧我们可以欣赏最新的单曲，比传统的百度MP3播放界面要美观很多。不过，百度音乐抢鲜族还处于测试阶段，打开的很多链接还是采用传统的百度MP3页面。</font></p><p align="center"><font color="#000000" size="2"><a href="http://www.diggsoft.com/uploads/userup/0811/04100RT0M.jpg" target="_blank"><img border="0" alt="" src="http://www.diggsoft.com/uploads/userup/0811/04100RT0M.jpg" width="550" height="329" /></a>&nbsp;</font></p><p><font color="#000000" size="2">　　</font></p><p class="pictext" align="center"><font color="#000000" size="2">在线音乐</font></p><p><font color="#000000" size="2">　　应用实例五：在线视频</font></p><p><font color="#000000" size="2">　　代表产品：微软视频</font></p><p><font color="#000000" size="2">　　产品简介：Microsoft Videos(微软视频)是微软推出的采用Silverlight技术的在线视频网站，目前尚处于测试阶段。该站点专门集中展示以及收集与微软有关的一些视频资源，包括一些正式的新闻报道、演示、帮助和教程视频等等。</font></p><p><font color="#000000" size="2">　　试用体会：打开http://www.microsoft.com/video/，在&ldquo;Search&rdquo;搜索框输入相应的关键词，就可以搜索到相应的视频内容。不过，微软视频还处于测试阶段，视频内容还比较少，以微软的新闻报道、产品演示等视频为主。在视频播放功能方面，清晰度尚可，&ldquo;dim lights&rdquo;(弱光)、&ldquo;detach player&rdquo;(分离播放器)以及&ldquo;Watch as WMV&rdquo;(用WMP播放)小功能比较实用，弱光可以让播放窗口更加突出地显示，分离播放器功能可以用单独窗口欣赏视频，用WMP播放功能可以打开WMP窗口播放视频。</font></p><p align="center"><font color="#000000" size="2"><a href="http://www.diggsoft.com/uploads/userup/0811/04100Z12I2.jpg" target="_blank"><img border="0" alt="" src="http://www.diggsoft.com/uploads/userup/0811/04100Z12I2.jpg" width="578" height="470" /></a>&nbsp;</font></p><p><font color="#000000" size="2">　　</font></p><p class="pictext" align="center"><font color="#000000" size="2">微软视频</font></p><p><font color="#000000" size="2">　　总体来说，相对于其他的Silverlight技术应用，在网络视频方面并不出彩。不过，相信在正式版本上线之后，播放功能会更加强大、视频内容还会更加丰富。</font></p><p><font color="#000000" size="2">　　应用实例六：电子商务</font></p><p><font color="#000000" size="2">　　代表产品：淘宝&ldquo;闪光店铺&rdquo;</font></p><p><font color="#000000" size="2">　　产品简介：&ldquo;闪光店铺&rdquo;是淘宝网和微软合作的项目，借助Silverlight技术，可以为淘宝卖家提供更多样化的店铺以及宝贝展示方式，比如通过平铺的宝贝图片可以看到商品的每一个细节。据悉，未来淘宝网还将为IE8定制淘宝定制版本。</font></p><p><font color="#000000" size="2">　　试用体会：打开http://list.mall.taobao.com/promotion/activity/silverlight.htm我们就可以看到淘宝的&ldquo;闪光店铺&rdquo;，因为是测试推广阶段，目前只提供了12家闪光灯店铺。</font></p><p><font color="#000000" size="2">　　跟传统的淘宝店铺相比，&ldquo;闪光店铺&rdquo;的展示借助于多个采用Deep Zoom技术的图片更加直观，比如可以自动播放宝贝图片(图9)，对图片进行缩放，宝贝图片可以叠加显示;而且展示页面可以进行叠加，这样在淘宝网买东西的时候不用一次打开多个页面。但是，并没有向媒体报道中提到的那样支持可以通过鼠标拖拽移动图片、通过滚轮放缩图片。</font></p><p><font color="#000000" size="2">　　目前，&ldquo;闪光店铺&rdquo;还只是淘宝网的一个概念性项目，未来如果店铺内容全部采用该技术展示，需要增加文字展示和提高图片的缩放比例，让买家能看到更大、更清晰的宝贝图片。</font></p><p><font color="#000000" size="2">　　应用实例七：电子邮箱</font></p><p><font color="#000000" size="2">　　代表产品：AOL邮箱</font></p><p><font color="#000000" size="2">　　产品简介：完全采用微软Silverlight技术开发的新版AOL邮箱&mdash;&mdash;AOL Mail RIA，目前处于测试阶段，采用动感的操作界面，支持界面换肤功能。</font></p><p><font color="#000000" size="2">　　试用体会：打开http://ria.aol.com/，相比旧版的AOL邮箱，AOL Mail RIA界面更加动感(图10)，点击右上角的四色按钮，在弹出的&ldquo;Select a Theme&rdquo;(选择主题)窗口中我们还可以选择喜欢的风格主题。在功能方面，AOL Mail RIA少了日历功能，以及AOL事件、AOL财经等小工具，不过增加的Truveo视频搜索，其他功能没什么变化，也没有明显的提高。 </font></p><p>&nbsp;</p><p><font color="#000000" size="2">　　应用实例八：游戏开发</font></p><p><font color="#000000" size="2">　　代表产品：Popfly+Popfly Game Creater</font></p><p><font color="#000000" size="2">　　产品简介：Popfly(http://www.popfly.com/)是微软在去年5月中旬推出的一款基于微软Silverlight技术架构的可视化Web开发平台。通过 Popfly提供的服务，用户可以轻松的创建以及分享自己的Mushup(数据混合编辑)、Game(游戏)、Gadget(小工具)、Web，甚至是应用程序等等。Popfly Game Creater是微软最近发布的一款面向普通用户的在线DIY游戏制作工具。</font></p><p><font color="#000000" size="2">　　试用体会：下面以Popfly Game Creater为例，来感受一下DIY游戏的乐趣。打开http://www.popfly.com/gamecreator/，可以使用Windows Live ID登录。在Popfly Game Creater中提供了大量的游戏模板，比如kill the Peas、Space Boy等，选择某个游戏模板，我们可以进行修改，在&ldquo;Actors&rdquo;(角色)中，在左侧我们可以通过素材库添加演员(People)、Animals(动物)、Buildings(建筑物)、Special Effects(场景特效)等等(图11);在&ldquo;Scenes&rdquo;(场景)中修改背景、行为、背景音乐;修改完成之后，在&ldquo;Play&rdquo;中试玩，看看自己的DIY成果。</font></p><p><font color="#000000" size="2">　　对普通用户来说，即使你没有游戏编程经验，通过这样傻瓜化的操作界面同样可以制作出、修改出有创意的游戏。</font></p><p><font color="#000000" size="2">　　更多Silverlight应用服务：</font></p><p><font color="#000000" size="2">　　Microsoft Download Center&mdash;&mdash;http://www.microsoft.com/beta/downloads/，微软下载中心Beta版</font></p><p><font color="#000000" size="2">　　滔滔酷炫体验版&mdash;&mdash;http://yg.qq.com/taotao/，腾讯采用Silverlight的微博客平台</font></p><p><font color="#000000" size="2">　　新浪音乐频道&mdash;&mdash;http://yue.sina.com.cn/，新浪采用Silverlight的音乐频道</font></p><p><font color="#000000" size="2">　　Zleek&mdash;&mdash;http://www.zleek.com/，建立和分享电子相册</font></p><p><font color="#000000" size="2">　　MyShowroom&mdash;&mdash;http://myshowroom.tv/，通过摄像头发布直播视频</font></p><p><font color="#000000" size="2">　　MSN UK Viewer&mdash;&mdash;http://viewer.uk.msn.com/，MSN英国全新的在线浏览体验应用Viewer</font></p><p><font color="#000000" size="2">　　如果对基于Silverlight技术开发的产品、服务还意犹未尽，大家不妨去Silverlight的官方网站看看(http://silverlight.net/)，在&ldquo;Showcase&rdquo;栏目中我们可以看到不同国家和地区&ldquo;银光&rdquo;爱好者开发的Silverlight应用程序或服务。</font></p></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2009-3-20 10:48:42</dc:date.Taken>
    </item>
    <item>
      <title>SQL2005转SQL2000的方法</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2009/2/4636.shtml</link>
      <pubDate>12 Feb 2009 14:25:09</pubDate>
      <guid>http://qianxun.net/Post/2009/2/4636.shtml</guid>
      <description><![CDATA[<div><p><span style="font-size: medium">应一个朋友的要求，最所也正好无事，解决此问题</span></p><p>***************************************</p><h2>SQL2005转SQL2000的方法</h2><div id="postmessage_910298" class="t_msgfont">直接restore或附加应该是不行的, 用脚本+导数据肯定没有问题。<br /><br />2005转到2000的步骤<br />1. 生成for 2000版本的数据库脚本<br />2005 的manger studio<br />-- 打开&quot;对象资源管理器&quot;(没有的话按F8), 连接到你的实例<br />-- 右键要转到2000的库<br />-- 任务<br />-- 生成脚本<br />-- 在&quot;脚本向导&quot;的&quot;选择数据库&quot;中, 确定选择的是要转到2000的库<br />-- 勾选&quot;为所选数据库中的所有对象编写脚本&quot;<br />-- 在接下来的&quot;选择脚本选项&quot;中, 找到&quot;为服务器版本编写脚本&quot;项, 选择&quot;SQL Server 2000&quot;<br />-- 其他选项根据需要设置<br />-- 最后把脚本保存到一个 .sql 脚本文件<br /><br />2. 在2000中创建目标数据库<br />在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库<br /><br />3. 将数据从2005导到2000<br />2005 的manger studio<br />-- 打开&quot;对象资源管理器&quot;(没有的话按F8), 连接到你的实例<br />-- 右键要转到2000的库<br />-- 任务<br />-- 导出数据<br />-- 在&quot;SQL Server 导入和导出向导&quot;的&quot;选择数据源&quot;步骤中, 确定选择的是要导出的数据库<br />-- 在&quot;选择目标&quot;步骤中, 连接到 2000, 并选择步骤2新建的库<br />-- 在&quot;选择源表和源视图&quot;中, 选择所有的表<br />-- 最后完成</div><div class="t_msgfont">***********************************</div><div class="t_msgfont">我按照上面的方法操作，到转换为2000数据库脚步时它提示转换错误，目标版本（2000）不支持某个属性。这下我估计应该是服务器上的数据库系统不支持我那个默认属性了。这个问题让我想到.net的版本问题，我现在使用的是2.0的，但是我以后可能在给这个程序升级的时候使用3.5的版本。看来在选择空间的时候还是选择支持最高版本的好。</div><div class="t_msgfont">如果哪位朋友对我上面的问题有其他的解决方案就在评论中告诉，谢谢</div></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2009-3-20 10:48:42</dc:date.Taken>
    </item>
    <item>
      <title>初始ASP.NET MVC框架</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2009/1/4634.shtml</link>
      <pubDate>8 Jan 2009 15:54:31</pubDate>
      <guid>http://qianxun.net/Post/2009/1/4634.shtml</guid>
      <description><![CDATA[<div><p>刚刚接触了几天ASP.NET MVC框架，发现它和原来asp.net的web form模型相比，生成的Html代码更加整洁了，没有了viewstate。前台页面中的代码有点像asp，但是可以把逻辑处理部分写在其他的代码文件中，前台只负责展现。</p><p><strong>MVC框架的工作流程</strong>（摘自Scott Guthrie的博客）</p><p>MVC是个将一个应用的实现分成三个组件角色的框架技术：模型，视图和控制器。</p><p><img alt="" border="0" src="http://images.cnblogs.com/cnblogs_com/esshs/step0.jpg" /><br /><br />在基于MVC的应用里，Model(模型)是负责保持状态的应用组件。这个状态通常都持久于数据库之中（譬如，我们也许会有一个Product（产品）类用来代表SQL中的Products数据表中的订单数据)。 <br />在基于MVC的应用里，View(视图)是负责显示用户界面的组件。这个UI通常是使用模型数据来创建的（譬如，我们也许会生成一个Product&quot;编辑&quot;视图，根据当前Product对象的状态，显示文本框，下拉框和复选框等)。 <br />在基于MVC的应用里，Controller(控制器)是处理用户交互，操作模型和最终选择用哪个视图来显示UI的组件。在MVC应用中，视图只是用来显示信息而已，是控制器来处理和回应用户的输入和交互的。 <br /><br />&nbsp;</p><p><strong>实用链接：</strong></p><p><a href="http://www.asp.net/mvc/">http://www.asp.net/mvc/</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供最新的MVC框架下载，提供教程及示例</p><p><a href="http://www.codeplex.com/aspnet">http://www.codeplex.com/aspnet</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供最新的MVC框架源码下载</p><p>ASP.NET MVC框架开发系列课程：</p><p><a href="http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/MVC.aspx">http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/MVC.aspx</a>&nbsp;</p><p><a href="http://aspnetmvc.cnblogs.com/">http://aspnetmvc.cnblogs.com/</a>&nbsp; ASP.NET MVC团队（博客园）</p><p><a href="http://blog.joycode.com/scottgu/">http://blog.joycode.com/scottgu/</a>&nbsp;&nbsp; Scott Guthrie 博客中文版（.NET之父的blog，了解.net发展的最新动向，当然也包括ASP.NET MVC的）</p></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2009-3-20 10:48:42</dc:date.Taken>
    </item>
  </channel>
</rss>