星期一, 9月 28, 2009

html做listbox單選

html做listbox很簡單,就select tag加個multiple屬性為true即可
但都mutiple了怎麼做單選... 好像在找碴
上網查一下 好像沒人做這麼無聊的事
但美工很機車... 只好自己來了 (johnny我恨你)
利用javascript動態讀一下

html
<select id="test1" multiple="true"> //設multiple為true
 //<option id='test1_opt1'>1</option>
 ...
 //就不多寫了,不過得先為option取可識別的名字
</select>


javascript ... 唔 其實是透過jquery
var lastSelectedID=-1;
$("select#test1").change(function(){
 var tmpLastSelectedID=-1;
 jQuery('option:selected', this).each(function(){
  //避開滑鼠直接選2個以上
  if(tmpLastSelectedID>0){
   $(this).attr("selected",false);
   return true;
  }

  //避開ctrl點選
  if (lastSelectedID==$(this).attr("id")){
   $(this).attr("selected",false);
   return true;
  }else{
   tmpLastSelectedID=id;
  }
 });
 lastSelectedID=tmpLastSelectedID;
});


p.s 不過避開滑鼠直接選2個以上還有問題 就是都是預設選到第一個

星期五, 9月 25, 2009

即刻提升jQuery性能的十个技巧[TUTS+]

1. 使用最新版本
2. 合併、最小化腳本
3. 用for替代each
4. 用ID替代class選擇器
5. 給選擇器指定前後文
6. 建立緩存
7. 避免DOM操作
8. 避免使用concat(),利用join()處理長字串
9. 返回false值
10. 利用小抄和參考文檔



英文 NetTut+:10 Ways to Instantly Increase Your jQuery Performance
中文翻譯:十种方式即刻提升您的jQuery代码性能[TUTS+]

星期二, 9月 22, 2009

jqgrid 3.5 需配合jquery ui

website:http://www.trirand.com/blog/
document: wiki jqgrid 趕流行,3.5後也利用wiki編文件了
download: jqgrid lastest

正要寫個新專案要用到jqGrid
看到jqGrid 3.5釋出了 就開心的拿來用
下載時發現 還「金熬」跟jquery ui一樣可自定要的功能再下載


青菜勾勾就按了下載...
解開壓縮檔 看到有install.txt
看都不看 照著過去的方法 就去設定了

結果搞了半天還沒出來
記得兩、三下就該用好的東西呀
還上網查了一下... 結果查到自己寫的設定 = ="
怪了... 最後認命的再打開install.txt看
才知道設定有改了,但是demo的內文還是用舊的
所以不能開心的全複製貼上...要小調一下

1.不用自定的theme,改用jquery-ui
download: jquery-ui
問:什麼..鏈結只是網站...
答:自己勾要載什麼啦 啥... 不知要勾什麼...這...問goolge大神吧
所以囉,要再html裡加入這句
<link rel="stylesheet" type="text/css" media="screen" href="path_to_ui_css_file/jquery-ui-1.7.2.custom.css" />

2.指定jqgrid.css
雖然改用了jquery-ui,但本身還是有其css設定
<link rel="stylesheet" type="text/css" media="screen" href="path_to_jqgrid_css_file/ui.jqgrid.css" />

3.指定grid.locale-XX.js及jquery.jqGrid.min.js
grid.locale-XX.js是語系包,在js/i18n的資料夾裡
jquery.jqGrid.min.js當然就是jgGrid本身的js啦
<script src="path_to_js_files/grid.locale-en.js" type="text/javascript"/></script/>
<script src="path_to_js_files/jquery.jqGrid.min.js" type="text/javascript"/></script/>


而原本設定的"imgpath"就用不到了
jQuery("#list4").jqGrid(
...
imgpath: gridimgpath //這行就不用了,拿掉
});


完整的範例如下 (利用array完成)
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
    <script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery-ui-1.7.2.custom.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

<script type="text/javascript">
$(function(){ 
    jQuery("#list4").jqGrid({
        datatype: "local",
        height: 250,
        colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'],
        colModel: [
            {
                name: 'id',
                index: 'id',
                width: 60,
                sorttype: "int"
            }, {
                name: 'invdate',
                index: 'invdate',
                width: 90,
                sorttype: "date"
            }, {
                name: 'name',
                index: 'name',
                width: 100
            }, {
                name: 'amount',
                index: 'amount',
                width: 80,
                align: "right",
                sorttype: "float"
            }, {
                name: 'tax',
                index: 'tax',
                width: 80,
                align: "right",
                sorttype: "float"
            }, {
                name: 'total',
                index: 'total',
                width: 80,
                align: "right",
                sorttype: "float"
            }, {
                name: 'note',
                index: 'note',
                width: 150,
                sortable: false
            }],
                multiselect: true,
                caption: "Manipulating Array Data"
        });
    var mydata = [{
        id: "1",
        invdate: "2007-10-01",
        name: "test",
        note: "note",
        amount: "200.00",
        tax: "10.00",
        total: "210.00"
    }, {
        id: "2",
        invdate: "2007-10-03",
        name: "test2",
        note: "note2",
        amount: "300.00",
        tax: "20.00",
        total: "320.00"
    }, {
        id: "3",
        invdate: "2007-09-01",
        name: "test3",
        note: "note3",
        amount: "400.00",
        tax: "30.00",
        total: "430.00"
    }];
    for (var i = 0; i <= mydata.length; i++) 
        jQuery("#list4").addRowData(i + 1, mydata[i]);
    });
</script>
</head>
<body>
    <table id="list4" class="scroll" cellpadding="0" cellspacing="0">
</table>
</body>
</html>

星期四, 9月 17, 2009

jquery autocomplete ie 無效

新的網頁需要autocomplete的效果
用了半天卻用不出來
看看過去用的 程式碼一模一樣也沒用

不過在firefox就很開心的出現
ie就掛在那邊

一個個測試下才發現是
美工為了去除連結虛線框
在css裡加了以下這段
a,input {
outline: none; /* for Firefox */
hlbr:expression(this.onFocus=this.blur()); /* for IE */
}


這就難怪了
autocomplete就是在input被focus時才會出現
而這css在focus時 馬上就blur... 難怪沒出現

星期二, 9月 15, 2009

帳號、密碼的管理

存放帳、密
利用windows的註冊表來儲放帳、密

//在註冊表的HKEY_CURRENT_USER下建立AccountInfo資料夾及kevyu的鍵值
using Microsoft.Win32;
...
RegistryKey key = Registry.CurrentUser; //放在CurrentUser下
RegistryKey newkey = key.CreateSubKey(@"AccountInfo"); //在CurrentUser下建立AccountInfo資料夾
newkey.SetValue("kevyu", "ok1234"); //建立kevyu的密碼值 ok1234

//讀取值
RegistryKey mykey = key.OpenSubKey(@"AccountInfo", true);
Console.WriteLine("kevyu's password is " + mykey.GetValue("kevyu"));

當然 這樣存明碼實在太high了...
看下一步來加密

加密
存儲密碼——要做對

星期一, 9月 14, 2009

jQuery 套件 - 廣告輪播跑馬燈

網址:jQuery Cycle Plugin
效果不錯,而且範例的圖片及jquery core都是用網路鏈結
載回去就可以直接跑了 都不用更改路徑
就感心ㄟ
See More Demos and Examples

* Super Basic Demo (view source for details)
* Beginner Demos
* Intermediate Demos (Part 1)
* Intermediate Demos (Part 2)
* Advanced Demos (Part 1)
* Advanced Demos (Part 2)
* Even More Demos (lots of additinal demos can be found here)

<!-- 設定輪播框架外觀 -->
<style type="text/css">
.slideshow { height: 232px; width: 232px; }
.slideshow img { padding: 15px; border: 1px solid #ccc; background-color: #eee; }
</style>
<!-- include jQuery library -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<!-- include Cycle plugin -->
<script type="text/javascript" src="http://jquery.malsup.com/cycle/jquery.cycle.all.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.slideshow').cycle({
fx: 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
});
});
</script>
</head>
<body>
<!-- 將要播放的物件(img,span,... 啥都可以)放容器裡 -->
<div class="slideshow">
<img src="http://jquery.malsup.com/cycle/images/beach1.jpg" width="200" height="200" />
<img src="http://jquery.malsup.com/cycle/images/beach2.jpg" width="200" height="200" />
<img src="http://jquery.malsup.com/cycle/images/beach3.jpg" width="200" height="200" />
<img src="http://jquery.malsup.com/cycle/images/beach4.jpg" width="200" height="200" />
<img src="http://jquery.malsup.com/cycle/images/beach5.jpg" width="200" height="200" />
</div>
</body>