<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_零度的火</title><subtitle type="text">不以物喜，不以己悲</subtitle><id>http://feed.cnblogs.com/blog/u/23640/rss</id><updated>2012-05-21T05:57:05Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/23640/rss"/><entry><id>http://www.cnblogs.com/Ricky81317/archive/2012/05/21/2511553.html</id><title type="text">使Ruby在OS X的控制台输出中使用颜色</title><summary type="text">在使用Ruby向控制台输出文本的时候，很好的Coloring是很有必要的。以下是我找到的如何向OS X的终端中输出着色文本的方法。其实，在Linux下应该也同样适用。本来我只需要把找到的博文链接贴出来就好，可惜那博文是在blogspot上，正在为一堵伟大的墙挡着。所以方便起见，我只能全文贴过来。附上原文链接：http://craiccomputing.blogspot.com/2010/08/printing-colored-text-in-unix-terminals.htmlPrinting Colored Text in UNIX Terminals from RubyOutputtin</summary><published>2012-05-21T05:57:00Z</published><updated>2012-05-21T05:57:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2012/05/21/2511553.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2012/05/21/2511553.html"/><content type="html">&lt;p&gt;在使用Ruby向控制台输出文本的时候，很好的Coloring是很有必要的。以下是我找到的如何向OS X的终端中输出着色文本的方法。其实，在Linux下应该也同样适用。&lt;/p&gt;&lt;p&gt;本来我只需要把找到的博文链接贴出来就好，可惜那博文是在blogspot上，正在为一堵伟大的墙挡着。所以方便起见，我只能全文贴过来。附上原文链接：&lt;/p&gt;&lt;p&gt;&lt;a href="http://craiccomputing.blogspot.com/2010/08/printing-colored-text-in-unix-terminals.html"&gt;http://craiccomputing.blogspot.com/2010/08/printing-colored-text-in-unix-terminals.html&lt;/a&gt;&lt;/p&gt;&lt;h3 class="post-title entry-title"&gt;Printing Colored Text in UNIX Terminals from Ruby&lt;/strong&gt;&lt;/p&gt;&lt;div class="post-header"&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="post-body-1826953120995957029" class="post-body entry-content"&gt;Outputting text in color in a UNIX console/Xterminal is kind of old school - some might say obsolete - but once in a while it is very useful. One example is the Red/Green coloring of test results. You don't get a lot of options but enough to highlight relevant text.&lt;br /&gt;&lt;br /&gt;The cryptic escape codes are explained in &lt;a href="http://en.wikipedia.org/wiki/ANSI_escape_code"&gt;this Wiki page&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;This Ruby script outputs fore and background colors and a couple of the other useful modifiers.&lt;code&gt;#!/usr/bin/ruby&lt;br /&gt;&lt;br /&gt;puts "\033[1mForeground Colors...\033[0m\n"&lt;br /&gt;puts "   \033[30mBlack (30)\033[0m\n"&lt;br /&gt;puts "   \033[31mRed (31)\033[0m\n"&lt;br /&gt;puts "   \033[32mGreen (32)\033[0m\n"&lt;br /&gt;puts "   \033[33mYellow (33)\033[0m\n"&lt;br /&gt;puts "   \033[34mBlue (34)\033[0m\n"&lt;br /&gt;puts "   \033[35mMagenta (35)\033[0m\n"&lt;br /&gt;puts "   \033[36mCyan (36)\033[0m\n"&lt;br /&gt;puts "   \033[37mWhite (37)\033[0m\n"&lt;br /&gt;puts ''&lt;br /&gt;&lt;br /&gt;puts "\033[1mBackground Colors...\033[0m\n"&lt;br /&gt;puts "   \033[40m\033[37mBlack (40), White Text\033[0m\n"&lt;br /&gt;puts "   \033[41mRed (41)\033[0m\n"&lt;br /&gt;puts "   \033[42mGreen (42)\033[0m\n"&lt;br /&gt;puts "   \033[43mYellow (43)\033[0m\n"&lt;br /&gt;puts "   \033[44mBlue (44)\033[0m\n"&lt;br /&gt;puts "   \033[45mMagenta (45)\033[0m\n"&lt;br /&gt;puts "   \033[46mCyan (46)\033[0m\n"&lt;br /&gt;puts "   \033[47mWhite (47)\033[0m\n"&lt;br /&gt;puts ''&lt;br /&gt;puts "\033[1mModifiers...\033[0m\n"&lt;br /&gt;puts "   Reset (0)"&lt;br /&gt;puts "   \033[1mBold (1)\033[0m\n"&lt;br /&gt;puts "   \033[4mUnderlined (4)\033[0m\n"&lt;br /&gt;&lt;/code&gt;Note that the exact colors will vary between different terminals. So try it and see.&lt;br /&gt;&lt;br /&gt;The script will show you enough to create your own colored terminal output. But what if you sometimes want your output to go to a terminal (TTY) and other times to a file? In the latter, all the escape codes will give you garbage characters when you view the file. The trick here is to test whether our not your script is writing to a TTY with 'STDOUT.tty?'. If so then add the escape codes, if not then leave them out.&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2511553.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2012/05/21/2511553.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2012/03/13/2394299.html</id><title type="text">在OS X系统中配置Ruby on Rails使其可以访问Sql Server数据库</title><summary type="text">经过大半天的折腾，终于可以让RoR在OS X系统里访问Sql Server数据库了。这里记录一下操作的过程，免得以后忘了。第一步，安装FreeTDS从FreeTDS的官网上下载最新的稳定版的压缩包，然后，遵照这里的说明进行手工编译（好怀念微软的Setup.exe和*.msi啊），其中只需要前7步：1. Download the latest stable release offreetds.2. Extract freetds tgz file within Downloads3. Open terminal and cd to Downloads/freetds-0.** folder4. </summary><published>2012-03-13T10:30:00Z</published><updated>2012-03-13T10:30:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2012/03/13/2394299.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2012/03/13/2394299.html"/><content type="html">&lt;p&gt;经过大半天的折腾，终于可以让RoR在OS X系统里访问Sql Server数据库了。这里记录一下操作的过程，免得以后忘了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第一步，安装FreeTDS&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;从FreeTDS的&lt;a href="http://www.freetds.org" target="_blank"&gt;官网&lt;/a&gt;上下载最新的稳定版的压缩包，然后，遵照&lt;a href="http://pmkenney.com/fix-for-freetds-ruby-odbc-on-max-os-x-leopard.htm" target="_blank"&gt;这里&lt;/a&gt;的说明进行手工编译（好怀念微软的Setup.exe和*.msi啊），其中只需要前7步：&lt;/p&gt;&lt;p&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;1. Download the latest stable release of&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style="text-decoration: none; vertical-align: baseline; white-space: normal; text-transform: none; color: #333333; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; margin: 0px; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-image: initial; border-width: 0px; padding: 0px;" href="ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz"&gt;freetds&lt;/a&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;.&lt;/span&gt;&lt;br style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;2. Extract freetds tgz file within Downloads&lt;/span&gt;&lt;br style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;3. Open terminal and cd to Downloads/freetds-0.** folder&lt;/span&gt;&lt;br style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;4. run &amp;ldquo;./configure&amp;rdquo;&lt;/span&gt;&lt;br style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;5. run &amp;ldquo;cp /usr/bin/glibtool libtool&amp;rdquo; &amp;lt;----Important!&lt;/span&gt;&lt;br style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;6. run "sudo make"&lt;/span&gt;&lt;br style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /&gt;&lt;span style="white-space: normal; text-transform: none; color: #222222; word-spacing: 0px; float: none; text-align: left; font: 12px/16px Verdana, Georgia, 'Times New Roman', Times, serif; letter-spacing: normal; orphans: 2; widows: 2; display: inline !important; background-color: #ffffff; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;7. run "sudo make install"&lt;/span&gt;&lt;/p&gt;&lt;p&gt;这样，我们的FreeTDS就算是装好了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第二步， 安装Tiny_TDS&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;就在命令行里执行： gem install tiny_tds&lt;/p&gt;&lt;p&gt;不要问我gem从哪里来的，google一下gem就会找到很多信息。在OS X里，gem是内置的。呵呵。&lt;/p&gt;&lt;p&gt;注意，如果没有安装FreeTDS的话，tiny_tds也肯定会安装失败，因为它依赖FreeTDS&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第三步， 安装 activerecord_sqlserver_adapter&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;同样，只需要在命令行里执行： gem install activerecord_sqlserver_adapter&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第四步， 修改RoR项目根目录下的Gemfile文件，增加一下2句：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;gem 'tiny_tds'&lt;/p&gt;&lt;p&gt;gem 'activerecord_sqlserver_adapter'&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第五步，运行bundle install&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在命令行里运行 bundle install，运行完毕之后会输出很多Using语句，看看tiny_tds和activerecord_sqlserver_adapter是否包含在里面，应该都包含在里面才正确。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第六步，修改database.yml&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打来RoR项目根目录下、config子目录下的database.yml文件，根据需要修改配置，比如：&lt;/p&gt;&lt;p&gt;development:&lt;/p&gt;&lt;p&gt;adapter: sqlserver&lt;/p&gt;&lt;p&gt;mode: dblib&lt;/p&gt;&lt;p&gt;dataserver: 10.4.30.77\Sql2005 　 # Name from freetds.conf, host or instance 'localhost\SQLEXPRESS'&lt;/p&gt;&lt;p&gt;host: 10.4.30.77 　 　 　 　 　# Used if dataserver is blank.&lt;/p&gt;&lt;p&gt;port: 1433 　 　 　 　 　 　 　# Used if host present. Default is 1433.&lt;/p&gt;&lt;p&gt;database: ALO_DB&lt;/p&gt;&lt;p&gt;username: db_user&lt;/p&gt;&lt;p&gt;password: xxxx&lt;/p&gt;&lt;p&gt;timeout: 5000&lt;/p&gt;&lt;p&gt;azure: false # for windows azure&lt;/p&gt;&lt;p&gt;&lt;strong&gt;最后，大功告成&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;可以创建model了： rails generate model MyShipper ShipperID:int ShipperName:string&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2394299.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2012/03/13/2394299.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2012/02/22/2363324.html</id><title type="text">为jQuery UI 中的DatePicker 控件改造一个Clear按钮</title><summary type="text">对于时间紧、任务重的遇到同个问题的程序员兄弟，请直接看代码，跳过下面的絮叨文字。最近都快成了一个JavaScript前台程序员了。。。原本我想只关注后台来着……没办法，工作需要啊～今天一个同事突然跑过来，问我jQuery UI 里的DatePicker能不能增加一个Clear按钮，来个一键清除，我想强大的DatePicker肯定已经考虑到了这个需求，或许就是一个简单属性设置的事儿，结果，让我失望了，DatePicker并没有提供Clear功能，Google了一顿，结论是，或许曾经有，但从某个时间开始，基于某种原因被去掉了，并且再也没有回来过。网上有些人给了一些重度hack的做法，深入到控件的生</summary><published>2012-02-22T08:14:00Z</published><updated>2012-02-22T08:14:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2012/02/22/2363324.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2012/02/22/2363324.html"/><content type="html">&lt;p&gt;对于时间紧、任务重的遇到同个问题的程序员兄弟，请直接看代码，跳过下面的絮叨文字。&lt;/p&gt;&lt;p&gt;最近都快成了一个JavaScript前台程序员了。。。原本我想只关注后台来着&amp;hellip;&amp;hellip;没办法，工作需要啊～&lt;/p&gt;&lt;p&gt;今天一个同事突然跑过来，问我jQuery UI 里的DatePicker能不能增加一个Clear按钮，来个一键清除，我想强大的DatePicker肯定已经考虑到了这个需求，或许就是一个简单属性设置的事儿，结果，让我失望了，DatePicker并没有提供Clear功能，Google了一顿，结论是，或许曾经有，但从某个时间开始，基于某种原因被去掉了，并且再也没有回来过。网上有些人给了一些重度hack的做法，深入到控件的生成HTML的函数之中增加了一个Clear按钮。这对于我辈JavaScript菜鸟，实在是不敢妄动，哪怕只是Copy &amp;amp; Paste. 其实DatePicker提供了2个按钮， Today 和 Done，为何我们不从这个Done按钮入手，让它洗心革面，改造成一个Clear按钮，同时又尽量只从控件的外围打补丁呢？经过对DatePicker生成的HTML的分析，发现似乎并不能难。只需要用以下代码解决之。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; $(document).ready(&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; ()&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;用来存放当前正在操作的日期文本框的引用。&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; datepicker_CurrentInput;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 设置DatePicker 的默认设置&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     $.datepicker.setDefaults({ showButtonPanel: &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;, closeText: 'Clear', beforeShow: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (input, inst) { datepicker_CurrentInput = input; } });&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 绑定&amp;ldquo;Done&amp;rdquo;按钮的click事件，触发的时候，清空文本框的值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     $(".ui-datepicker-close").live("click", &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; ()&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         datepicker_CurrentInput.value = "";&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;     });&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; });&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2363324.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2012/02/22/2363324.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2012/02/14/2351039.html</id><title type="text">更换jQuery Validation里默认的验证方法</title><summary type="text">在最近做的一个项目中，使用jQuery Validation验证日期，遇到的问题和一个没有预料到的情况是，在ASP.NET MVC 3的项目中，对于 &lt;input type="date" data-val="true" /&gt;的元素，如果调用form的valid方法验证form，虽然我没有添加日期验证的设置，仅仅type="date"，但其依然调用了日期验证逻辑来验证日期格式是否正确。这本来是个不错的行为，但问题在于，其支持的日期格式有限，阅读jQuery Validation的代码会知道（当然，文档中也有说明），对于“da</summary><published>2012-02-14T06:27:00Z</published><updated>2012-02-14T06:27:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2012/02/14/2351039.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2012/02/14/2351039.html"/><content type="html">&lt;p&gt;在最近做的一个项目中，使用jQuery Validation验证日期，遇到的问题和一个没有预料到的情况是，在ASP.NET MVC 3的项目中，对于 &amp;lt;input type="date" data-val="true" /&amp;gt;的元素，如果调用form的valid方法验证form，虽然我没有添加日期验证的设置，仅仅type="date"，但其依然调用了日期验证逻辑来验证日期格式是否正确。这本来是个不错的行为，但问题在于，其支持的日期格式有限，阅读jQuery Validation的代码会知道（当然，文档中也有说明），对于&amp;ldquo;date&amp;rdquo;，日期验证只是利用Javascript内置的处理来验证，反映到代码里，就是看new Date(日期字符串)能否成功。在我的电脑中，输入日期"9/5/2012"可以验证通过，但&amp;ldquo;2012-9-5&amp;rdquo;验证失败，后者显然也是一种正确的格式。我需要改变或者改善这种行为。如何做？&lt;/p&gt;&lt;p&gt;当然，我们可以修改jQuery Validation的源代码，但是首先，我引用的是CDN上的代码，其次，作为一个public的库，我想还是尽量不要自己去改动，日久天长，可能我们已经忘记了对它的修改，而官方更新新版本时，我们弄下来更新，结果就把我们自己的修改给覆盖了。更好的办法，是打补丁，从外部把date的验证函数替换成我们自己的。这里或许要感谢Javascript的OO还不是那么彻底，并没有把那些内置验证方法整成protected/private，看了源代码之后，替换的方法很简单，在引用jQuery Validation的源码之后，再这样替换：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;$.validator.methods.date = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (value, element)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Date.parse函数源自另外一个处理日期的库&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.optional(element) || Date.parse(value) != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;};&lt;/div&gt;&lt;p&gt;此外替换默认的message，也可以用同样的办法，比如：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;$.validator.messages.date = "hey, you entered an invalid date"&lt;/div&gt;&lt;p&gt;当然，处理messages有其他支持的更好的办法，这在jQuery Validation的全球化和本地化的说明中有提及。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2351039.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2012/02/14/2351039.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2012/02/09/2343450.html</id><title type="text">与jQuery UI的Accordion控件高度相似但可以同时展开多个区域的代码</title><summary type="text">原文和演示在这里：http://jsfiddle.net/DkHyd/我在这里直接粘贴出代码作为备份：首先是演示用的Html,这里我简化一点内容，使其更短一些Html Code&lt;h1&gt;Toggle Panels&lt;/h1&gt;&lt;div id="notaccordion"&gt; &lt;h3&gt;&lt;a href="#"&gt;Section 1&lt;/a&gt;&lt;/h3&gt; &lt;div&gt; &lt;p&gt; Mauris mauris ante, blandit et, ultrices a, sus</summary><published>2012-02-09T00:12:00Z</published><updated>2012-02-09T00:12:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2012/02/09/2343450.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2012/02/09/2343450.html"/><content type="html">&lt;p&gt;原文和演示在这里：&lt;a href="http://jsfiddle.net/DkHyd/" target="_blank"&gt;http://jsfiddle.net/DkHyd/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;我在这里直接粘贴出代码作为备份：&lt;/p&gt;&lt;p&gt;首先是演示用的Html,这里我简化一点内容，使其更短一些&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('d7edfc61-9730-4c6f-b84d-65eac379d616')"&gt;&lt;div id="cnblogs_code_open_d7edfc61-9730-4c6f-b84d-65eac379d616" class="cnblogs_code_hide"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;Toggle Panels&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="notaccordion"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="#"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;Section 1&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Mauris mauris  ante, blandit et, ultrices a, suscipit eget, quam. Integer&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="#"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;Section 2&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Sed non urna. Donec et ante. Phasellus eu ligula.  Vestibulum sit amet&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="#"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;Section 3&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Nam enim risus, molestie et, porta ac, aliquam ac,  risus. Quisque lobortis.&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ul&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;List item one&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;List item two&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;List item  three&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;ul&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="#"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;Section 4&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Cras dictum. Pellentesque habitant morbi tristique  senectus et netus&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Suspendisse eu nisl. Nullam ut libero. Integer  dignissim consequat lectus.&lt;br /&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;然后是关键，jQuery代码：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; $.fn.togglepanels = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(){&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.each(&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(){&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     $(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;).addClass("ui-accordion ui-accordion-icons ui-widget ui-helper-reset")&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;   .find("h3")&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     .addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom")&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     .hover(&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;() { $(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;).toggleClass("ui-state-hover"); })&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     .prepend('&amp;lt;span class="ui-icon ui-icon-triangle-1-e"&amp;gt;&amp;lt;/span&amp;gt;')&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     .click(&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;() {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;       $(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         .toggleClass("ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom")&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         .find("&amp;gt; .ui-icon").toggleClass("ui-icon-triangle-1-e ui-icon-triangle-1-s").end()&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         .next().slideToggle();&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     })&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     .next()&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;       .addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom")&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;       .hide();&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;   });&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; };&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; $("#notaccordion").togglepanels();&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2343450.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2012/02/09/2343450.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2012/01/31/2333776.html</id><title type="text">在jQuery Mobile中当调用listview的refresh函数之后，圆角变直角的问题</title><summary type="text">jQuery Mobile 在我开发移动web站点的时候，帮了很大的忙，但是今天发现一个问题，就是在执行listview("refresh")函数之后，开了data-inset="true"的listview原来的圆角边框变成了直角边框了。。。经过调试发现，在调用refresh之后，listview中的第一个 li 的 class 缺少了 ui-corner-top，而最后一个 li 缺少了 ui-corner-bottom，解决的办法很简单，就是refresh之后把这2个class 加上。1 // lv就是listview对象2 lv.listview</summary><published>2012-01-31T09:13:00Z</published><updated>2012-01-31T09:13:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2012/01/31/2333776.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2012/01/31/2333776.html"/><content type="html">&lt;p&gt;jQuery Mobile 在我开发移动web站点的时候，帮了很大的忙，但是今天发现一个问题，就是在执行listview("refresh")函数之后，开了data-inset="true"的listview原来的圆角边框变成了直角边框了。。。经过调试发现，在调用refresh之后，listview中的第一个 li 的 class 缺少了 ui-corner-top，而最后一个 li 缺少了 ui-corner-bottom，解决的办法很简单，就是refresh之后把这2个class 加上。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; lv就是listview对象&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; lv.listview("refresh");&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; lv.find("li:first").addClass("ui-corner-top");&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; lv.find("li:last").addClass("ui-corner-bottom");&lt;/div&gt;&lt;p&gt;这或许应该算是一个bug吧～&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2333776.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2012/01/31/2333776.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2011/12/15/2288955.html</id><title type="text">Linq to XML用XmlReader读取数据导致无法输出的格式化异常的问题</title><summary type="text">我简直不敢相信这是真的。XDocument类的Load方法利用XmlReader类读取一个模板XML文件，然后进行各种节点的增加操作最后利用Save方法存到文件去。结果发现输出的XML并没有很好的格式化，所有元素堆在一行上，各层节点之间没有换行。用尽了办法也没有发现为什么，把网络翻了个底朝天，结果一样，默认情况下，XDocument的Save方法会输出经过良好格式化的文本。但是为啥我这里就是不行呢？最后竟然发现，因为我用XmlReader作为XDocument加载原始数据的方法导致的，不要用XmlReader,换个比如StreamReader就可以了。神啊，怎么会这样？</summary><published>2011-12-15T07:19:00Z</published><updated>2011-12-15T07:19:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2011/12/15/2288955.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2011/12/15/2288955.html"/><content type="html">&lt;p&gt;我简直不敢相信这是真的。&lt;/p&gt;&lt;p&gt;XDocument类的Load方法利用XmlReader类读取一个模板XML文件，然后进行各种节点的增加操作最后利用Save方法存到文件去。结果发现输出的XML并没有很好的格式化，所有元素堆在一行上，各层节点之间没有换行。用尽了办法也没有发现为什么，把网络翻了个底朝天，结果一样，默认情况下，XDocument的Save方法会输出经过良好格式化的文本。但是为啥我这里就是不行呢？最后竟然发现，因为我用XmlReader作为XDocument加载原始数据的方法导致的，不要用XmlReader,换个比如StreamReader就可以了。神啊，怎么会这样？&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2288955.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2011/12/15/2288955.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2011/11/20/2256488.html</id><title type="text">获取照片的拍摄日期</title><summary type="text">整理照片是个麻烦事情。这几天有一批照片需要整理。需要按照拍摄日期进行重命名。经过文件复制之后，文件本身的日期早已面目全非，但是现在的相机的好处是会自动记录照片的很多独立的详细信息，比如照片的拍摄日期。那么怎么才能取到这些信息呢？一番查找，知道这些信息好像是叫做“EXIF”的格式信息。这个网站有它们的详细说明，基本上，每项信息包括ID，数值以及类型和长度等信息。这里我只关心拍摄日期。ID代表数据名称，比如16进制0x0132, 0x9003, 0x9004应该就代表拍摄日期，但具体区别我还不是很清楚，我怎么知道的那个值？从上面提到的那个网站里查到的，当然里面内容很长，看起来也有些复杂，我只是找到</summary><published>2011-11-20T13:45:00Z</published><updated>2011-11-20T13:45:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2011/11/20/2256488.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2011/11/20/2256488.html"/><content type="html">&lt;p&gt;整理照片是个麻烦事情。这几天有一批照片需要整理。需要按照拍摄日期进行重命名。经过文件复制之后，文件本身的日期早已面目全非，但是现在的相机的好处是会自动记录照片的很多独立的详细信息，比如照片的拍摄日期。那么怎么才能取到这些信息呢？一番查找，知道这些信息好像是叫做&amp;ldquo;EXIF&amp;rdquo;的格式信息。&lt;a href="http://www.exif.org/specifications.html" target="_blank"&gt;这个网站&lt;/a&gt;有它们的详细说明，基本上，每项信息包括ID，数值以及类型和长度等信息。这里我只关心拍摄日期。ID代表数据名称，比如16进制0x0132, 0x9003, 0x9004应该就代表拍摄日期，但具体区别我还不是很清楚，我怎么知道的那个值？从上面提到的&lt;a href="http://www.exif.org/specifications.html" target="_blank"&gt;那个网站&lt;/a&gt;里查到的，当然里面内容很长，看起来也有些复杂，我只是找到了它，然后一试才知道是正确的。知道了ID，那么对应的值是怎样的呢？ .NET Framework的Image类已经提供了PropertyItems集合，帮我们把这些信息按照ID建立了数组，而每个ID对应的值则是byte[]，也就是说，具体的可读内容，需要根据具体的数据类型自己去转换了。对于拍摄日期，谢天谢地，这byte[]不难解析，直接转换为ASCII字符串就是。&lt;/p&gt;&lt;p&gt;这是代码：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Image img = Image.FromFile(&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;C:\Users\Protoss\Pictures\WP_000028.jpg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;System.Drawing.Imaging.PropertyItem[] items = img.PropertyItems;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; DateToken = System.Text.Encoding.ASCII.GetString(items.First(i =&amp;gt; i.Id == &lt;span style="color: #800080;"&gt;0x9003&lt;/span&gt; || i.Id == &lt;span style="color: #800080;"&gt;0x9004&lt;/span&gt; || i.Id == &lt;span style="color: #800080;"&gt;0x0132&lt;/span&gt;).Value);&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2256488.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2011/11/20/2256488.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2011/11/08/2241352.html</id><title type="text">RDLC 2010设计器的数据源无法找到静态类作为数据源</title><summary type="text">在RDLC 2010里面添加数据源，发现在Data Source下拉列表框中没有列出来我需要的类。最后发现是因为那些类是静态类，变成普通类之后就可以列出来了，但是类中的静态方法是可以正确列出来的。不晓得为什么不列出静态类，也许是因为设计器在内部总是会实例化数据源对象？</summary><published>2011-11-08T08:37:00Z</published><updated>2011-11-08T08:37:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2011/11/08/2241352.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2011/11/08/2241352.html"/><content type="html">&lt;p&gt;在RDLC 2010里面添加数据源，发现在Data &amp;nbsp;Source下拉列表框中没有列出来我需要的类。最后发现是因为那些类是静态类，变成普通类之后就可以列出来了，但是类中的静态方法是可以正确列出来的。不晓得为什么不列出静态类，也许是因为设计器在内部总是会实例化数据源对象？&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2241352.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2011/11/08/2241352.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ricky81317/archive/2011/11/02/2233023.html</id><title type="text">兼容IE和FF的获取event对象和keycode的代码</title><summary type="text">获取事件的event对象，以及获取按键码，其他浏览器也兼容var evt = window.event || arguments.callee.caller.arguments[0];var charCode = (evt.which) ? evt.which : evt.keyCode;备忘。</summary><published>2011-11-02T06:19:00Z</published><updated>2011-11-02T06:19:00Z</updated><author><name>零度的火</name><uri>http://www.cnblogs.com/Ricky81317/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ricky81317/archive/2011/11/02/2233023.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ricky81317/archive/2011/11/02/2233023.html"/><content type="html">&lt;p&gt;获取事件的event对象，以及获取按键码，其他浏览器也兼容&lt;/p&gt;&lt;p&gt;var evt = window.event || arguments.callee.caller.arguments[0];&lt;br /&gt;var charCode = (evt.which) ? evt.which : evt.keyCode;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;备忘。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ricky81317/aggbug/2233023.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ricky81317/archive/2011/11/02/2233023.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
