顯示具有 javascript 標籤的文章。 顯示所有文章
顯示具有 javascript 標籤的文章。 顯示所有文章

2014年8月12日 星期二

Generate QR Code by using Google Chart API

API Reference 基本上就是參考這裡:
https://google-developers.appspot.com/chart/infographics/docs/qr_codes

API Root URL 網址:
https://chart.googleapis.com/chart?

會用到的參數大致就這四個:
cht=qr //這是固定一定要的chs=<width>x<height> //產生QR Code圖的寬高
choe=UTF-8 //編碼預設定UTF-8,所以也可以不設定
chl=Hello%20world //QR Code的內容
chld=<error_correction_level>|<margin> //容錯率 預設是L(7%)也可以設定 M/Q/H
margin 是留邊,單位是QR Code的內格區塊寬度數,預設是4



比較重要的地方是:因為是以URL傳送,所以QR Code內容需要先做 URI 編碼動作,
把一些如空白或一些特殊字元轉成%XX的16進位碥碼,以避免出現錯誤的內容。
若是在 JavaScripte 中可以用 encodeURIComponent(uri); 先把內容編碼。
PHP 中則可用 string urlencode ( string $str ); 函數來編碼。

所以直接以API網址來產生QR Code的例如下(Sample URL):
https://chart.googleapis.com/chart?cht=qr&chs=200x200&chld=L|0&chl=Hello%20world


或是以 JavaScripte 來動態產生(generate by JavaScript dynamically):



補上一個網路分享的QR Code(還有Bar Code等的)解碼器(Chart Decode Tool)
http://zxing.org/w/decode.jspx

2013年12月26日 星期四

Javascript 如何檢查日期的合法性? How to check the DATE is valid in Javascript?


其實如果是用 DateTime Picker 就應該不會有這樣的需求,
但規劃是用 年 / 月 / 日 各別的下拉選單,就有可能出現像是 2月30 or 31這樣的日期。
而且如果還要自行判斷是否為閏年或是大小月就更麻煩了。

利用 Javescript 中的 Date Object 來幫忙做處理是最方便不過的。
但是 Date Object 中卻沒有 method 可以用來做日期的合法檢查。

.valueOf().getTime() 是會回傳 NaN 沒錯,但那只有在日期是超過處理範圍時才會發生。

new Date( '2005-02-31' ) 並不會被認為非法,但最後會被轉換為 '2005-03-03'

所以也正好利用這個點去檢查,是否輸入的日期是合法的。

// 傳入 年月日 檢查是否為合法日期
function validDate( _year, _month, _day )
{
  var Day = new Date( _year+ '-' + _month+ '-' + _day);
  var chk = new Date( Day.valueOf() );
  return (chk.getFullYear()==_year && (chk.getMonth()+1)==_month && chk.getDate()==_day);
}
以上

Use Javascript Date() Object to convert date-time info. But JS Date Object didn't have a method to check if the DATE is valid.

.valueOf() and .getTime() can get NaN. But it is only returned when out of DATE-TIME rang.

Date( '2005-02-31' ) will be accepted, but will be converted into '2005-03-03'.

So I can check the _year,_month &_day if the same after Date() converted.