TOP

2013年7月25日 星期四

[JQuery]Selector使用教學

JQuery提供的提供了許多selector用法 >>連結<<
熟悉這些Selector可以讓你快速的選到正確的物件,提升開發速度,以下替各位整理一些常用的指令
  //選取所有元素
  $('*');
  
  //使用HTML DOM選取(常用selector)
  $('a');$('div');$('p');$('input');
  
  //使用class選取(常用selector)
  $('.link');
  
  //使用type選取(常用selector)
  $(':checkbox');
xxx 
OOO
+++

//$('selector[attribute="value"]')選取attribute為title且value為link1
$('a[title="link1"]').size(); //1

//$('selector[attribute|="value"]')選取attribute為url且value開頭單字為en
$('a[url|="en"]').size(); //2

//$('selector[attribute*="value"]')選取attribute為name且value內容包含man(任意位置)
$('a[name*="man"]').size(); //3

//$('selector[attribute~="value"]')選取attribute為name且value內容包含完整單字good
$('a[name~="good"]').size(); //1

//$('selector[attribute^="value"]')選取attribute為title且value開頭為link
$('a[title^="link"]').size(); //3

//$('selector[attribute$="value"]')選取attribute為name且value結尾包含man
$('a[name$="man"]').size(); //2

//選取第一個a
$('a:first').text();//XXX
$('a').eq(0).text();//OOO

//選取第二個a
$('a:eq(1)').text();//OOO
$('a').eq(1).text();//OOO

//選取最後一個a
$('a:last').text();//+++

//選取有class這個attribute的物件
$('a[class]').text();//xxx

//選取子物件為img的物件
$('a:has(img)').size();//1

//選取index 1,3,5,7....的物件
$("a:odd").css("background-color", "#bbbbff");
 
 //取得下拉式選單選取得值
  $('select[name="sel1"] option:selected').text();
  
  //取得所有class為Ck_add且被選取的checkbox
  $('input[class="Ck_add"]:checked').size();
  
  //選擇正在播放動畫的DIV
  $('div:animated');
  

Corey

Yehuda

Adam

Todd

Nobody

Jorn

Scott

Timo

//$('selector:gt(index)') 取index後的所有p
$( "p:gt(1)" ).text('oo');
//$('selector:gt(-index)') 取得總數量減去index後的所有p
$( "p:gt(-2)" ).text('xx');


//各區塊內第一個變色
$("span:first-of-type").css('background-color','#123');
//區塊內最後一個變色
$("span:last-of-type").css('background-color','#123');

2013年7月11日 星期四

[JQuery]去除符號

寫網頁時遇到輸入的地方都要特別小心使用者輸入了一些不法字元
為了降低SQL injection的發生,我們可以用JQuery動一些手腳

var txt='!@#$&^&*(&*(*&()';
txt=txt.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,' ');
alert(txt);
※預防SQL injection,建議在Server端再做些防護,因為瀏覽器的 console介面可以讓懂JQuery語法的人下語法去讓整的驗證機制失效

2013年7月4日 星期四

[JQuery]超簡單GoTop按鈕

將CSS放入<head></head>




下列語法放入<body></body>

TOP

JQuery語法放在<body></body>最後面
註:須先將JQuery的JS檔包進來
$(function(){

  $(window).scroll(function() {
     if ($(window).scrollTop() > 0) {
        $('#TopBtn').css('display','block')
     } else {
        $('#TopBtn').css('display','none')
     };
  }).scroll();
  
  $('#TopBtn').click(function(){
     $("html,body").animate({scrollTop: 0}, 500);
  })

});

2013年7月3日 星期三

[JQuery]調整視窗大小時,版面跟著調整

如果想要讓您的網頁,根據瀏覽器視窗大小,而決定要顯示多少內容
可以透過JQuery來處理,不多說我們直接進入範例

首先在您Js檔及CSS放入<head></head> 中

並且將以四個DIV加入Body
JQuery的程式碼您可以考慮寫在<Body></Body>中,不過在開發大型網頁時,小編建議也包成一個JS檔方便管理
$(function(){
    $(window).resize(function(){ 
        $('.box').each(function(){
              if ( $(window).width() < ($(this).index()+1)*200)
              {
                 $(this).css('display','none');
              }
              else
              {
                 $(this).css('display','');
              }
         });
  
     });
});
(此範例紅、黃、綠的底色為黑色,視窗縮小後上層色即消失)

2013年7月1日 星期一

[SQL]Trigger(觸發程序)大批異動資料時,要注意的事


看這篇文章前,您必須先瞭解什麼是Trigger(觸發程序),Trigger可以想像它是一個警報器,只有三件事情可以使這個警報器發揮作用,
Insert、Update和Delete這三個指令,而這個警報器用在資料表被這三個指令使用時觸發,因此我們可以讓資料表插入資料時,讓Trigger
去幫我們檢查或是更新資料時另外加一筆資料到另一張資料表,今天介紹Trigger不是重點,今天要說的是大批異動資料時通常會忽略的事。

以下使用北風資料庫來做範例
[Orders2]             (訂單資料表)
[OrderDetails2]    (訂單明細)

為了快速達成Demo效果先建立資料表
Orders2、OrderDetails2,並將資料轉入
CREATE TABLE [dbo].[Orders2](
 [OrderID] [int]  NOT NULL,
 [CustomerID] [nvarchar](5) NULL,
 [EmployeeID] [int] NULL,
 [OrderDate] [datetime] NULL,
 [RequiredDate] [datetime] NULL,
 [ShippedDate] [datetime] NULL,
 [ShipVia] [int] NULL,
 [Freight] [money] NULL,
 [ShipName] [nvarchar](40) NULL,
 [ShipAddress] [nvarchar](60) NULL,
 [ShipCity] [nvarchar](15) NULL,
 [ShipRegion] [nvarchar](15) NULL,
 [ShipPostalCode] [nvarchar](10) NULL,
 [ShipCountry] [nvarchar](15) NULL)
 
INSERT INTO [Orders2] SELECT * FROM [Orders]
------------------------------------------------------------- 
CREATE TABLE [dbo].[OrderDetails2](
 [OrderID] [int] NOT NULL,
 [ProductID] [int] NOT NULL,
 [UnitPrice] [money] NOT NULL,
 [Quantity] [smallint] NOT NULL,
 [Discount] [real] NOT NULL)
 
INSERT INTO  [OrderDetails2] SELECT * FROM [OrderDetails]

建立Trigger




















一般來說Trigger會這樣寫,這樣可以讓刪除[orders]的資料時可以將刪除的動作觸發Trigger並且刪除[OrderDetails]

--Trigger01
Create TRIGGER [dbo].[Orders2_trigger_del] ON [dbo].[Orders2]
FOR Delete --指定Delete觸發本事件
AS
DECLARE @orderid int
 SELECT @orderid=orderID FROM DELETED
 Delete OrderDetails2 where OrderID=@orderid 


今天我們要刪除訂單,以下指令將會刪除14筆資料
DELETE orders  where EmployeeID=5 AND ShipVia=1

如果使用 Trigger01 的方式,就會發現刪了14筆訂單主檔跟第一筆訂單的明細,可是其他訂單的明細卻沒有跟著刪除
 

--Trigger02 
Alter TRIGGER [dbo].[Orders2_trigger_del] ON [dbo].[Orders2]
FOR Delete --指定Delete觸發本事件
AS
    Delete OrderDetails2 where OrderID in
    (SELECT orderID FROM DELETED)--此Trigger包含N筆資料
Trigger02這種方式也可以改用迴圈去處理各筆資料,
如此一來,我們刪除訂單的同時,Trigger也會確實地將明細也一併清除