Danh mục

Thứ Bảy, 31 tháng 7, 2010

jQuery - effect

Trong bài này sẽ giới thiệu một số phương thức tạo và quản lý hiệu ứng mà jQuery đã cung cấp.
  • slideUp( [thời gian], [hàm thực thi khi hiệu ứng thực hiện xong])
  • slideDown( [thời gian], [hàm thực thi khi hiệu ứng thực hiện xong])
  • fadeIn( [thời gian], [hàm thực thi khi hiệu ứng thực hiện xong])
  • fadeOut( [thời gian], [hàm thực thi khi hiệu ứng thực hiện xong])
  • Các phương thức này có thể có hoặc không có tham số. Ngoài ra, ta có thể dùng chuỗi "slow" and "fast" để qui định thời gian cho hiệu ứng.

Code
<div>
<style>
#effect_div_border{
display:block;
width:600px;
height:180px;
}
#effect_div{
display:block;
}
#effect_div img{
width:130px;
height:130px;
}
</style>
<script type="text/javascript">
jQuery(document).ready(function(){
var fade = false;
var slide = false;
jQuery("#fadein").click(function(){
if (fade){
jQuery("#effect_div").fadeIn();
fade=!fade;
jQuery("#fadeout").removeAttr("disabled");
jQuery("#fadein").attr("disabled","true");
}
});
jQuery("#fadeout").click(function(){
if (!fade){
jQuery("#effect_div").fadeOut();
fade=!fade;
jQuery("#fadein").removeAttr("disabled");
jQuery("#fadeout").attr("disabled","true");
}
});
jQuery("#slideup").click(function(){
if(!slide){
jQuery("#effect_div").slideUp();
slide=!slide;
jQuery("#slidedown").removeAttr("disabled");
jQuery("#slideup").attr("disabled","true");
}
});
jQuery("#slidedown").click(function(){
if(slide){
jQuery("#effect_div").slideDown();
slide=!slide;
jQuery("#slideup").removeAttr("disabled");
jQuery("#slidedown").attr("disabled","true");
}
});
});
</script>
<div id="effect_div_border">
<input type="button" id="fadein" value="Fade In" disabled/>
<input type="button" id="fadeout" value="Fade Out"/>
<input type="button" id="slideup" value="Slide Up"/>
<input type="button" id="slidedown" value="Slide Down" disabled/>
<div id="effect_div">
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTslH7dYz31POh8LP3t6M0ZCQY4UOTf23zr_KvD__QwprE4pAZY_CZE3vWmD4C-A1u0mkf6YzHAS8iWBjNLxGjb_QOpg08CI4BhQ9pyJfHuDftEwh4JXdOJJOf9ygryyrOJY1PRgbIRBIc/s320/thSesshomaruChibi.jpg"/>
</div>
</div>
</div>
Demo
  • show
  • hide
  • toggle
  • slideToggle
Code
<div>
<style>
#effect_div_border{
display:block;
width:600px;
height:180px;
}
.effect_div{
display:block;
}
.effect_div img{
width:130px;
height:130px;
}
</style>
<script type="text/javascript">
jQuery(document).ready(function(){
var show = false;
jQuery("#show").click(function(){
if (show){
jQuery("#show-hide").show();
show=!show;
jQuery("#hide").removeAttr("disabled");
jQuery("#show").attr("disabled","true");
}
});
jQuery("#hide").click(function(){
if (!show){
jQuery("#show-hide").hide();
show=!show;
jQuery("#show").removeAttr("disabled");
jQuery("#hide").attr("disabled","true");
}
});
jQuery("#toggle").click(function(){
jQuery("#show-hide").toggle();
});
jQuery("#slidetoggle").click(function(){
jQuery("#show-hide").slideToggle();
});
});
</script>
<input type="button" id="show" value="Show" disabled/>
<input type="button" id="hide" value="Hide"/>
<input type="button" id="toggle" value="Toggle"/>
<input type="button" id="slidetoggle" value="Slide Toggle"/>
<div id="effect_div_border">
<div class="effect_div" id="effect_div">
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTslH7dYz31POh8LP3t6M0ZCQY4UOTf23zr_KvD__QwprE4pAZY_CZE3vWmD4C-A1u0mkf6YzHAS8iWBjNLxGjb_QOpg08CI4BhQ9pyJfHuDftEwh4JXdOJJOf9ygryyrOJY1PRgbIRBIc/s320/thSesshomaruChibi.jpg"/>
</div>
</div>
</div>
Demo

Thứ Hai, 26 tháng 7, 2010

jQuery - mouse hover

Bài viết này đưa ra một ví dụ đơn giản về cách sử dụng event mouse hover trong jQuery. Chúng ta thường sử dụng hover của css để thay đổi style của một element. Nếu ta muốn những xử lý phức tạp được thực thi khi hover thì css không thể đáp ứng được => Vậy ta phải tự viết.

Syntax: .hover(MouseInFunction, MouseOutFunction)

  • MouseInFunction: Hàm được gọi tới khi con trỏ di chuyển vào element.
  • MouseOutFunction: Hàm được gọi tới khi con trỏ di chuyển ra khỏi element.

Ví dụ: Khi di chuyển con trỏ chuột vào ảnh thì ảnh sẽ được phóng to ra, khi con trỏ chuột rời khỏi ảnh kích thước ảnh trở lại như cũ.


Code
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("[name='hover_image']").css("top",(jQuery("#hover_div").position().top + 20)+"px");
var left = 40;
jQuery("[name='hover_image']").each(function(i,val){
jQuery(this).css("left",(jQuery("#hover_div").position().left + left)+"px");
left+=100;
});
jQuery("[name='hover_image']").hover(function(){//ham callback hoverIn
jQuery(this).animate({
width:"+=20",
height:"+=20",
left:"-=10",
top:"-=10",
opacity:"1",
filter:"alpha(opacity=100)"
},300);
},function(){//ham callback hoverOut
jQuery(this).animate({
width:"-=20",
height:"-=20",
left:"+=10",
top:"+=10",
opacity:"0.4",
filter:"alpha(opacity=40)"
},300);
});
});
</script>
<style>
#hover_div img{
float:left;
position:absolute;
width:60px;
height:60px;
opacity:0.4;
filter:alpha(opacity=40)
}
</style>
<div id="hover_div" style="height:120px;background-color:#FBF9EA;border:1px solid black;">
<img name="hover_image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX0KCZGWY-pbPmlFERA5PqYs5mcXV5UGQK3xdvJbr1VgbAffbht0M_Q9rTovIa3XlOcLMIhqRy7SaLDQL6iuyom6qjIQUzh71I5rd9-K1L7eErhpX-nNf1ELE1oqFd1v9OuPwKAB82mIJY/s400/puppy"/>
<img name="hover_image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX0KCZGWY-pbPmlFERA5PqYs5mcXV5UGQK3xdvJbr1VgbAffbht0M_Q9rTovIa3XlOcLMIhqRy7SaLDQL6iuyom6qjIQUzh71I5rd9-K1L7eErhpX-nNf1ELE1oqFd1v9OuPwKAB82mIJY/s400/puppy"/>
<img name="hover_image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX0KCZGWY-pbPmlFERA5PqYs5mcXV5UGQK3xdvJbr1VgbAffbht0M_Q9rTovIa3XlOcLMIhqRy7SaLDQL6iuyom6qjIQUzh71I5rd9-K1L7eErhpX-nNf1ELE1oqFd1v9OuPwKAB82mIJY/s400/puppy"/>
</div>

Demo


Thứ Sáu, 16 tháng 7, 2010

jQuery - Selector

jQuery selector là gì?

jQuery selector là một cách gọi đến một hoặc nhiều đối tượng có một số đặc tính nhất định.
Ví dụ: gọi theo name, loại element, theo class,...

Các selector căn bản:

  1. #element_id: Trả về một đối tượng có thuộc tính id được truyền vào.
  2. [name='element_name']: Trả về một nhóm đối tượng có thuộc tính name được truyền vào.
  3. element_type: Trả về một nhóm đối tượng cùng một loại. VD:
    • jQuery("div") sẽ trả về toàn bộ các đối tượng là thẻ div.
    • jQuery("form input") sẽ trả về toàn bộ các đối tượng là thẻ input nằm trong thẻ form.
    • jQuery("#form_id input) sẽ trả về toàn bộ các đối tượng là thẻ input nằm trong thẻ form có id là id truyền vào.

  4. Kết hợp: cách gọi này gần giống như css sẽ tính từ trái sang phải theo thứ tự cha con.
    • jQuery("#test_table tr") trả ra toàn bộ các thẻ tr của table có id là test_table.
    • jQuery("div span") trả ra toàn bộ các thẻ span là con của thẻ div.
    • jQuery("div p span") trả ra toàn bộ các thẻ span thẻ con của p và p phải là thẻ con của div.

Một số phần mở rộng của selector:

  1. .class_name : Thường dùng với selector theo name và type. Trả ra một nhóm các đối tượng có class name tương ứng. VD:
    • jQuery("div.test") sẽ trả ra một nhóm các đối tượng là thẻ div có thuộc tính class là test.
    • jQuery("#my_ul li.select") trả ra một nhóm các đối tượng là thẻ li có class là select và thẻ li là con của thẻ ul có id là my_ul.
  2. :selected : Dùng để lấy ra các đối tượng có thuộc tính selected là true. VD:
    • jQuery("option:selected") sẽ trả ra một nhóm các option có thuộc tính selected bằng true.
  3. :checked : Thường dùng với checkbox và radio để lấy ra những đối tượng được checked. VD:
    • jQuery("[name='checkbox_list_name']:checked") sẽ trả ra một nhóm các checkbox theo tên truyền vào có thuộc tính checked bằng true.
    • jQuery("[name='radio_name']:checked") sẽ trả ra một nhóm các radio theo tên truyền vào có thuộc tính checked bằng true.
  4. :disabled :Trả về các thẻ có thuộc tính disabled. VD:
    • jQuery(":disabled") trả về toàn bộ các thẻ có thuộc tính disabled.
    • jQuery("input:disabled") trả về toàn bộ các thẻ input có thuộc tính disabled.
    • jQuery("form input:disabled") trả về toàn bộ các thẻ input nằm trong thẻ form có thuộc tính disabled.
  5. :odd : Trả về các thẻ có số thứ tự lẻ của đối tượng được chọn. VD:
    • jQuery("li:odd") trả về toàn bộ các thẻ li trên toàn trang web có thứ tự lẻ(1, 3, 5...).
    • jQuery("#ul_list li:odd") trả về toàn bộ các thẻ li con của đối tượng có id là ul_list có thứ tự lẻ.
    • jQuery("tr:odd") trả về toàn bộ các thẻ tr trên toàn trang web có thứ tự lẻ(1, 3, 5..).
    • jQuery("#mytable tr:odd") trả về toàn bộ các thẻ tr con của đối tượng có id là mytable có thứ tự lẻ.
  6. :even : Trả về các thẻ có số thứ tự chẵn của đối tượng được chọn. VD:
    • jQuery("li:even") trả về toàn bộ các thẻ li trên toàn trang web có thứ tự chẵn(2, 4, 6...).
    • jQuery("#ul_list li:even") trả về toàn bộ các thẻ li con của đối tượng có id là ul_list có thứ tự chẵn.
    • jQuery("tr:even") trả về toàn bộ các thẻ tr trên toàn trang web có thứ tự chẵn(2, 4, 6...).
    • jQuery("#mytable tr:even") trả về toàn bộ các thẻ tr con của đối tượng có id là mytable có thứ tự chẵn.

Thứ Sáu, 9 tháng 7, 2010

jQuery - hàm xử lý style

Bài viết này nói về một số hàm dùng để can thiệp vào style của một element.
  1. css: Dùng để lấy giá trị của một property của element trên website hoặc thiết lập giá trị cho css cho property.
    • .css (css property name): trả về giá trị của một property.
    • .css (css property, value): thiết lập giá trị cho một css property của element.
    • .css ( {list of properties} ): dùng để thiết lập một nhóm các thuộc tính css.
    • Tình huống: Thay đổi CSS cho ô vuông màu xám:
      • Nút Get: lấy ra giá trị của thuộc tính background-color.
      • Nút Set: thay đổi giá trị background-color.
      • Nút Group sẽ gán lại nhóm giá trị background-color, width, height.
    Code
    <div>
    <style>
    #css_left {
    border:1px solid black;
    background-color:gray;
    width:200px;
    height:200px;
    float:left;
    }
    #css_right {
    float:left;
    margin-left:50px;
    width:200px;
    height:200px;
    }
    </style>
    <script type="text/javascript">
    jQuery(document).ready(function(){
    jQuery("#butGet").click(function(){
    alert("background-color: " + jQuery("#css_left").css("background-color"));
    });
    jQuery("#butSet").click(function(){
    jQuery("#css_left").css("background-color","red");
    });
    jQuery("#butGroup").click(function(){
    jQuery("#css_left").css({"background-color":"green","width":"100px","height":"100px"});
    });
    });
    </script>
    <div id="css_left"></div>
    <div id="css_right">
    <input type="button" value="Get" id="butGet"/>
    <input type="button" value="Set" id="butSet"/>
    <input type="button" value="Group" id="butGroup"/>
    </div>
    <div style="clear:both;"></div>
    </div>

    Demo




  2. Các hàm thao tác với Attribute của một element.
    • attr: Dùng để lấy giá trị của một attribute của element hoặc gán giá trị cho một attribute.
      • .attr (attribute name): trả về giá trị của một attribute của một element.
      • .attr (attribute name, value): thiết lập giá trị cho một attribute của element.
      • .attr ( {list of properties} ): dùng để thiết lập một nhóm các attribute cho element.
    • removeAttr: Dùng để gở bỏ một attribute của một element.
      • .removeAttr (attribute name): gỡ bỏ một attribute ra khỏi một element.
    Tình huống: Thay đổi attribute cho ảnh (thẻ img)
    • Nút Get: lấy ra giá trị trong attribute src của thẻ img bên trái.

    • Nút Set One Attribute: Gán lại giá trị cho attribute src của thẻ img(đổi hình hiển thị).

    • Nút Set Group Attribute: Gán lại giá cho các attribute src, title, alt của ảnh. Để kiểm tra bạn rê chuột vào ảnh sẽ thấy hiện lên dòng tooltip sesshomaru image

    • Nút Remove Attribute: Gỡ bỏ thuộc tính title của ảnh( rê chuột vào ảnh để kiểm tra ảnh sẽ mất đi dòng tooltip).
    Code
    <div>
    <style>
    #attr_left {
    background-color:gray;
    width:122px;
    height:122px;
    float:left;
    }
    #attr_right {
    float:left;
    margin-left:50px;
    width:122px;
    height:122px;
    }
    </style>
    <script type="text/javascript">
    jQuery(document).ready(
    function(){jQuery("#butGetAttr").click(function(){
    alert("image src: " + jQuery("#myImage").attr("src"));
    });
    jQuery("#butOneAttr").click(function(){
    jQuery("#myImage").attr("src","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNdfLpTMuoC9TvQ81iExZGTW-uZ2EyLHFDk44mer6ZbAoCHLaN_hKAiO4RnN_erOSN6TVpHFpO_DswfpqeYcpG3ybX4VIywyk0N2rs767O6yV-Ouc_fax9CqiKs5iuunm6AQaN2gTv1vXK/s320/sesshomaru.jpeg");
    });
    jQuery("#butGroupAttr").click(function(){
    jQuery("#myImage").attr({src:"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTslH7dYz31POh8LP3t6M0ZCQY4UOTf23zr_KvD__QwprE4pAZY_CZE3vWmD4C-A1u0mkf6YzHAS8iWBjNLxGjb_QOpg08CI4BhQ9pyJfHuDftEwh4JXdOJJOf9ygryyrOJY1PRgbIRBIc/s320/thSesshomaruChibi.jpg",title:"Sesshomaru image",alt:"jquery attr image"});
    });
    jQuery("#butRemoveAttr").click(function(){
    jQuery("#myImage").removeAttr("title");
    });
    });
    </script>
    <div id="attr_left">
    <img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTslH7dYz31POh8LP3t6M0ZCQY4UOTf23zr_KvD__QwprE4pAZY_CZE3vWmD4C-A1u0mkf6YzHAS8iWBjNLxGjb_QOpg08CI4BhQ9pyJfHuDftEwh4JXdOJJOf9ygryyrOJY1PRgbIRBIc/s320/thSesshomaruChibi.jpg" border="0" alt=""id="myImage" />
    </div>
    <div id="attr_right">
    <input type="button" value="Get" id="butGetAttr"/>
    <input type="button" value="Set One Attribute" id="butOneAttr"/>
    <input type="button" value="Set Group Attribute" id="butGroupAttr"/>
    <input type="button" value="Remove Attribute" id="butRemoveAttr"/>
    </div>
    <div style="clear:both;"></div>
    </div>

    Demo





  3. Các hàm thao tác về class
    • .addClass (class name): Dùng để gán một class cho một element.
    • .removeClass (class name): gỡ bỏ class ra khỏi attribute class của element.
    Tình huống: Thay đổi class cho table
    • Nút Odd: dòng lẻ trong table sẽ xuất hiện màu nền vàng nhạt cho dòng đó.
    • Nút Even: dòng chẵn trong table sẽ xuất hiện màu nền xanh nhạt cho dòng đó.
    • Nút Reverse: đảo ngược hai class của dòng chẵn và lẻ.
    Code
    <div>
    <b>Demo</b>
    <style>
    #table_left{
    float:left;
    }
    #button_right{
    float:left;padding-left:50px;
    }
    #my_table{
    border-collapse:collapse;
    border:1px solid black;
    width:400px;
    }
    #my_table tr th{
    border:1px solid black;
    }
    #my_table tr td{
    border:1px solid black;
    }
    .odd{
    background-color:rgb(249,250,192);
    color:red;
    font-weight:bold;
    }
    .even{
    background-color:rgb(200,251,179);
    color:blue;
    }
    </style>
    <script type="text/javascript">
    jQuery(document).ready(function(){
    var odd = false;
    var even = false;
    jQuery("#butReverse").attr("disabled","true");
    jQuery("#butOdd").removeAttr("disabled","true");
    jQuery("#butEven").removeAttr("disabled","true");
    jQuery("#butOdd").click(function(){
    if (!odd){
    odd = !odd;
    jQuery("#my_table").find("tr:odd").addClass("odd");
    if (even){
    jQuery("#butReverse").removeAttr("disabled");
    jQuery("#butOdd").attr("disabled","true");
    jQuery("#butEven").attr("disabled","true");
    }
    }
    });
    jQuery("#butEven").click(function(){
    if (!even){
    even = !even;
    jQuery("#my_table").find("tr:even").addClass("even");
    if (odd){
    jQuery("#butReverse").removeAttr("disabled");
    jQuery("#butOdd").attr("disabled","true");
    jQuery("#butEven").attr("disabled","true");
    }
    }
    });
    jQuery("#butReverse").click(function(){
    jQuery("#my_table").find("tr:even").removeClass("even");
    jQuery("#my_table").find("tr:odd").removeClass("odd");
    jQuery("#my_table").find("tr:even").addClass("odd");
    jQuery("#my_table").find("tr:odd").addClass("even");
    });
    });
    </script>
    <div id="table_left">
    <table id="my_table">
    <tr style="background-color:black;color:white;">
    <th>STT</th><th>Họ và tên</th><th>Ngày sinh</th><th>Giới tính</th>
    </tr>
    <tr>
    <td>1</td><td>Nguyễn Van A</td><td>01/01/1989</td><td>Nam</td>
    </tr>
    <tr>
    <td>2</td><td>Trần Van B</td><td>01/08/1989</td><td>Nam</td>
    </tr>
    <tr>
    <td>3</td><td>Trương Thị C</td><td>05/01/1989</td><td>Nữ</td>
    </tr>
    <tr>
    <td>4</td><td>Phạm Thị D</td><td>02/06/1989</td><td>Nữ</td>
    </tr>
    <tr>
    <td>5</td><td>Lê Văn E</td><td>03/07/1989</td><td>Nam</td>
    </tr>
    </table>
    </div>
    <div id="button_right"><input type="button" value="Odd" id="butOdd" style="width:75px;"/>
    <input type="button" value="Even" id="butEven" style="width:75px;"/>
    <input type="button" value="Reverse" id="butReverse" style="width:75px;" disabled/></div>
    <div style="clear:both;"></div>
    </div>

    Demo
    STTHọ và tênNgày sinhGiới tính
    1Nguyễn Văn A01/01/1989Nam
    2Trần Văn B01/08/1989Nam
    3Trương Thị C05/01/1989Nữ
    4Phạm Thị D02/06/1989Nữ
    5Lê Văn E03/07/1989Nam





Một số câu hỏi thường gặp

  1. Sự khác nhau giữa hàm css và hàm addClass?
  2. Điểm khác nhau cơ bản nhất là hàm addClass thao tác trên attribute class của một element trong khi đó hàm css thao tác trên attribute style.

  3. Tại sao addClass rồi mà element vẫn không thay đổi ?
  4. Bạn nên kiểm tra lại style của element vì class có độ ưu tiên thấp hơn style. Ở ví dụ phía trên dòng tr đầu tiên có attribute style cố định do đó khi addClass vào các dòng lẻ các properties của class không thể đè lên được các properties trong attribute style được vì độ ưu tiên thấp hơn.

  5. Dùng hàm css để add một property cho một element vậy có cách nào remove property đó ra hay không?
  6. Câu trả lời là không. Do hàm css thao tác trên attribute style do đó khi đã add một property vào rồi thì bạn không thể remove nó ra mà chỉ có thể thay đổi giá tri của nó. Nếu muốn remove được thì tốt nhất là định nghĩa hai class khác nhau và sử dùng hàm addClass và removeClass.

  7. Tại sao dùng hàm addClass nhiều lần thì thuộc tính class không đổi?
  8. Do hàm addClass thao tác trên attribute class của element. Trên attribute class có thể tồn tại song song nhiều class khác nhau. Do đó khi dùng liên tiếp thì nó sẽ tự động thêm class vào và các properties trong hai class sẽ được overwrite lẫn nhau. VD: class="class1" dùng tiếp hàm addClass("class2") ta sẽ có class="class1 class2"

Thứ Ba, 6 tháng 7, 2010

jQuery - other event

Bài viết này giới thiệu một số kinh nghiệm cơ bản về một số sự kiện(event) khác trong jQuery.
  1. change: Thường dùng cho checkbox hoặc radio button.
  2. Tình huống: Check vào một checkbox hoặc một radio button bên trái, ô vuông xám bên phải sẽ hiển thị danh sách những checkbox hoặc radio nào được chọn.
    Code
    <div>
      <style>
      #change_table tr td div{
        width:200px;
        height:100px;
        background-color:#EAEAEA;
        border:1px solid black;
      }
      </style>
      <script type="text/javascript">
      jQuery(document).ready(function(){
        jQuery("[name='cks']").change(function(){
        var str="";
        jQuery("input[name='cks']:checked").each(function(i,val){
          str += jQuery(this).val() + " duoc checked, ";
        });
        jQuery("#cks_div").html(str);
        });
        jQuery("[name='rds']").change(function(){
        var str="";
        jQuery("input[name='rds']:checked").each(function(i,val){
          str += jQuery(this).val() + " duoc checked, ";
        });
        jQuery("#rds_div").html(str);
        });
      });
      </script>
      <table id="change_table"><tr>
        <td>
        <input type="checkbox" value="checkbox 1" name="cks">checkbox 1
        </input>
        <input type="checkbox" value="checkbox 2" name="cks">checkbox 2
        </input>
        <input type="checkbox" value="checkbox 3" name="cks">checkbox 3
        </input>
        <input type="checkbox" value="checkbox 4" name="cks">checkbox 4
        </input>
        </td>
        <td><div id="cks_div">Không có checkbox nào được check.</div></td>
      </tr>
      <tr>
        <td>
        <input type="radio" value="radio 1" name="rds">radio 1</input>
        <input type="radio" value="radio 2" name="rds">radio 2</input>
        <input type="radio" value="radio 3" name="rds">radio 3</input>
        <input type="radio" value="radio 4" name="rds">radio 4</input>
      </td>
        <td><div id="rds_div">Không có radio button nào được chọn.</div>
        </td>
      </tr>
      </table>
    </div>
    Demo
    checkbox 1
    checkbox 2
    checkbox 3
    checkbox 4
    Không có checkbox nào được check.
    radio 1
    radio 2
    radio 3
    radio 4
    Không có radio button nào được chọn.

  3. focus và blur
  4. Tình huống: Kiểm tra độ mạnh của password. Có 4 loại kí tự: kí tự thường, kí tự hoa, số, các kí tự đặc biệt. Điều kiện:
    • very weak: Thỏa 1 trong 4 loại kí tự.
    • weak: Thỏa 2 trong 4 loại kí tự.
    • medium: Thỏa 3 trong 4 loại kí tự.
    • strong: thỏa 4 loại kí tự.
    • Mật khẩu rỗng: sẽ hiển thị thông báo yêu cầu nhập.
    Code
    <div>
      <style>
      #pass_test:focus{
        background-color:black;
        color:white;
      }
      </style>
      <script type="text/javascript">
      jQuery(document).ready(function(){
        jQuery("#pass_test").focus(function(){
          jQuery("#pass_none").hide();
          jQuery("#pass_strength").html("very weak");
          jQuery("#pass_strength").fadeIn();
        });
        jQuery("#pass_test").blur(function(){
          if(jQuery("#pass_test").val()==""){
            jQuery("#pass_strength").hide();
            jQuery("#pass_none").fadeIn();
          }
        });
        jQuery("#pass_test").keyup(function(){
          var input = jQuery(this).val();
          var strongRegex = new RegExp("^(?=.*[^a-zA-Z0-9_])(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$", "g");
          var mediumRegex = new RegExp("^(((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9_]))|((?=.*[a-z])(?=.*[0-9])(?=.*[^a-zA-Z0-9_]))|((?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9_]))).*$", "g");
          var enoughRegex = new RegExp("^(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[^a-zA-Z0-9_]))|((?=.*[A-Z])(?=.*[^a-zA-Z0-9_]))|((?=.*[0-9])(?=.*[^a-zA-Z0-9_]))).*", "g");
          if (strongRegex.test(input)){
            jQuery("#pass_strength").html("strong");
          }else if (mediumRegex.test(input)){
            jQuery("#pass_strength").html("medium");
            }else if (enoughRegex.test(input)){
              jQuery("#pass_strength").html("weak");
              }else{
                jQuery("#pass_strength").html("very weak");
              }
        });
      });
      </script>
      <table>
        <tr>
          <td>
            <input type="text" id="pass_test"/>
          </td>
          <td>
            <div id="pass_strength" style="display:none"></div>
            <div id="pass_none" style="display:none">Vui lòng nh?p m?t kh?u.</div>
          </td>
        </tr>
      </table>
    </div>
    Demo

  5. live và bind: Thường dùng cho các để khai báo các hàm callback cho các sự kiện của một element
  6. Giống nhau
    • Cú pháp: objects.bind(event name, callback function),objects.live(event name, callback function)
    • Có thể khai báo 1 hàm callback cho nhiều event cùng lúc. VD: bind("click mousedown mouseup",callback function)
    Khác nhau
    • Hàm bind bắt buộc phải được sử dụng trong function callback của sự kiện ready của document. Hàm live không bắt buộc điều đó.
    • VD: $(document).ready(function(){ $("#element_id").bind(event name,callback)});
    Code
    <div>
      <style>
      #bind_left{
        width:200px;
        height:200px;
        float:left;
        background-color:#D0D0D0;
      }
      #bind_right{
        width:200px;
        height:200px;
        float:left;
        margin-left:50px;
        background-color:#EAEAEA;
        overflow:auto;
      }
      </style>
      <script type="text/javascript">
      jQuery(document).ready(function(){
        jQuery("#bind_left").bind("mousedown mouseup click",function(e){
          jQuery("#bind_right").html(jQuery("#bind_right").html()+ " " + e.type);
        });
      });
      jQuery("#bind_left").live("mouseover mouseout",function(e){
        jQuery("#bind_right").html(jQuery("#bind_right").html()+ " " + e.type);
      });
      </script>
      <div id="bind_left"></div>
      <div id="bind_right"></div>
      <div style="clear:both;"></div>
    </div>
    Demo

  7. scroll: Dùng để bắt sự kiện của thanh cuộn.
  8. Code
    <div><script type="text/javascript">
    $(document).ready(function() {
    jQuery(window).scroll(function(){
    if (jQuery(window).scrollTop()>0)
    {
    jQuery("#back").removeAttr("disabled");
    }
    else{
    jQuery("#back").attr("disabled",true);
    }
    });
    jQuery("#back").click(function(){
    var j = 0;
    var len = jQuery(window).scrollTop()/20;
    for (var i = jQuery(window).scrollTop(); i>=0;i-=len)
    {
    (i>0)? j = i:j = 0;
    jQuery(window).scrollTop(j).delay(5);
    }
    });
    });
    </script><div style="position:fixed;z-index:190;bottom:0;right:0px;"><input id="back" type="button" value=">>Back to top<<" /></div></div>
    Demo
    Tạo Button Back To Top đơn giản nằm ở góc phải màn hình. Chỉ khi nào có thể scroll lên đầu trang được thì button mới được enable lên.

Chủ Nhật, 4 tháng 7, 2010

jQuery - Keyboard event

Bài viết này sẽ giới thiệu một số ví dụ đơn giản về các sự kiện phím(keyboard event) trong jQuery:
  1. keypress
  2. Tình huống:Nhập một kí tự bất kì vào ô textbox bên trái sẽ hiển thị mã kí tự tương ứng bên ô textbox bên phải

    Code
    <div>
      <script type="text/javascript">
      $(document).ready(function(){
        $("#txt_left_ex1").keypress(function(e){
          $("#txt_keypress").val(e.keyCode);
        });
      });
      </script>
      <input type="text" id="txt_left_ex1"/>
    <input type="text" id="txt_keypress" disabled/>
    </div>


  3. keydown và keyup
  4. Tình huống:Nhập một kí tự bất kì vào ô textbox bên trái sự kiện keydown sẽ hiển thị mã kí tự tương ứng, sự kiện keyup sẽ hiển thị mã kí tự tiếp theo.

    Code
    <div>
      <style>
      #left{
        float:left;
      }
      #right{
        float:left;
        padding-left:50px;
      }
      </style>
      <script type="text/javascript">
      $(document).ready(function(){
        $("#txt_left_ex2").keydown(function(e){
          $("#txt_keydown").val(e.keyCode);
        });
        $("#txt_left_ex2").keyup(function(e){
          $("#txt_keyup").val(e.keyCode+1);
        });
      });
      </script>
      <div>
        <div id="left"><input type="text" id="txt_left_ex2"/></div>
        <div id="right"><input type="text" id="txt_keydown" disabled/>
        <input type="text" id="txt_keyup" disabled/>
        <div style="clear:both;"></div>
      </div>
    </div>


  5. Một số thuộc tính của ObjectEventHandle trong keyboard event thường sử dụng
    • ctrlKey: trả về true khi phím Ctrl được sử dụng.
    • shiftKey: trả về true khi phím Shift được sử dụng.
    • altKey: trả về true khi phím Alt được sử dụng.
    • which và keyCode: trả về mã kí tự tương ứng trên bàn phím(không tính kí tự hoa a = A = 65).
    • charCode: trả về mã kí tự tương ứng trong bảng mã mà bạn đang sử dụng(UTF-8, ASCII...).
    • type: loại event đang sở hữu ObjectEventHandle(keydown, keyup...).

  6. Bảng mã keyCode
  7. Key nameKey codeKey nameKey codeKey nameKey code
    backspace8tab9enter13
    shift16ctrl17alt18
    pause/break19capslock20escape27
    page up33page down34end35
    home36left arrow37up arrow38
    right arrow39down arrow40insert45
    delete46048149
    25035452
    553654755
    856957a65
    b66c67d68
    e69f70g71
    h72i73j74
    k75l76m77
    n78o79p80
    q81r82s83
    t84u85v86
    w87x88y89
    z90left window key91right window key92
    select93numpad 096numpad 197
    numpad 298numpad 399numpad 4100
    numpad 5101numpad 6102numpad 7103
    numpad 8104numpad 9105multiply(* numboard)106
    add107subtract109decimal point(. numboard)110
    divide(/ numboard)111f1112f2113
    f3114f4115f5116
    f6117f7118f8119
    f9120f10121f11122
    f12123num lock144scroll lock145
    semi-colon(;)186equal sign(=)187comma(,)188
    dash(-)189period(.)190forward slash(/)191
    grave accent(`)192open bracket([)219back slash(\)220
    close bracket(])221single quote(')222

Thứ Bảy, 3 tháng 7, 2010

jQuery - Mouse Event

Bài viết này sẽ giới thiệu một số ví dụ đơn giản về các sự kiện chuột(mouse event) trong jQuery:
  1. click
  2. Tình huống: Click vào button hiển thị alert.

    Code
    <script type="text/javascript">
    jQuery(document).ready(function(){
      jQuery("#butClick").click(function(){
        alert("Click");
      });
    });
    </script>
    <input type="button" value="Click me" id="butClick"/>


  3. mousedown và mouseup
  4. Tình huống: Nhấn trái chuột vào ô vuông xám bên trái thì ô vuông trắng bên phải sẽ hiển thị dòng chữ tương ứng với sự kiện(mouse down hoặc mouse up).

    Code
    <div>
      <style>
      #rect_left_1{
        background-color:gray;
        border:1px solid black;
        float:left;
        width:200px;
        height:200px;
      }
      #rect_right_1{
        border:1px solid black;
        float:left;
        margin-left:50px;
        width:200px;
        height:200px;
        color:red;
        overflow:auto;
      }
      </style>
      <script type="text/javascript">
      $(document).ready(function(){
        $("#rect_left_1").mousedown(function(){
          $("#rect_right_1").html($("#rect_right_1").html()+" mousedown");
        });
        $("#rect_left_1").mouseup(function(){
          $("#rect_right_1").html($("#rect_right_1").html()+" mouseup");
        });
      });
      </script>
      <div>
        <div id="rect_left_1"></div>
        <div id="rect_right_1"></div>
        <div style="clear:both;"></div>
      </div>
    </div>

    Click me

  5. mouseenter, mouseleave và mousemove
  6. Tình huống: Di chuyển chuột vào ô vuông xám bên trái thì ô vuông trắng bên phải sẽ hiển thị số lần sự kiện xảy ra (mouse enter và mouse leave), riêng sự kiện mouse move thì sẽ hiển thị tọa độ của con trỏ chuột trong ô xám.

    Code
    <div>
      <style>
      #rect_left_2{
        background-color:gray;
        border:1px solid black;
        float:left;
        width:200px;
        height:200px;
      }
      #rect_right_2{
        border:1px solid black;
        float:left;
        margin-left:50px;
        width:200px;
        height:200px;
      }
      </style>
      <script type="text/javascript">
      $(document).ready(function(){
        $("#rect_left_2").mouseenter(function(){
          var enter = $("#enter").html();
          enter++;
          $("#enter").html(enter);
        });
        $("#rect_left_2").mouseleave(function(){
          var leave = $("#leave").html();
          leave++;
          $("#leave").html(leave);
        });
        $("#rect_left_2").mousemove(function(e){
          $("#move_x").html(e.pageX);
          $("#move_y").html(e.pageY);
        });
      });
      </script>
      <div>
        <div id="rect_left_2"></div>
        <div id="rect_right_2">
          <span>mouse enter: <span id="enter">0</span></span>
          <span>mouse leave: <span id="leave">0</span></span>
          <span>mouse move(x,y):
          (<span id="move_x">0</span>,<span id="move_y">0</span>)
          </span>
        </div>
        <div style="clear:both;"></div>
      </div>
    </div>

    mouse enter: 0
    mouse leave: 0
    mouse move(x,y): (0,0)
  7. Một số thuộc tính thường sử dụng của ObjectEventHandle trong mouse event
    • pageX, pageY: Tọa độ trên trang web.
    • clientX, clientY: Tọa độ trên browser.
    • screenX, screenY: Tọa độ trên màn hình máy tính.


    Tình huống: Di chuyển chuột trong ô vuông xám bên trái thì ô vuông trắng bên phải sẽ hiển thị các thông số pageX, pageY, screenX,...

    Code
    <div>
      <style>
      #event_obj_left{
        background-color:gray;
        border:1px solid black;
        float:left;
        width:200px;
        height:200px;
      }
      #event_obj_right{
        border:1px solid black;
        float:left;
        margin-left:50px;
        width:200px;
        height:200px;
      }
      </style>
      <script type="text/javascript">
      $(document).ready(function(){
        $("#event_obj_left").mousemove(function(e){
          $("#page_x").html(e.pageX);
          $("#page_y").html(e.pageY);
          $("#client_x").html(e.clientX);
          $("#client_y").html(e.clientY);
          $("#screen_x").html(e.screenX);
          $("#screen_y").html(e.screenY);
        });
      });
      </script>
      <div>
        <div id="event_obj_left"></div>
        <div id="event_obj_right">
          <span>pageX: <span id="page_x">0</span>,
          pageY: <span id="page_y">0</span></span>
          <span>clientX: <span id="client_x">0</span>,
          clientY: <span id="client_y">0</span></span>
          <span>screenX: <span id="screen_x">0</span>,
          screenY: <span id="screen_y">0</span></span>
        </div>
        <div style="clear:both;"></div>
      </div>
    </div>


    pageX: 0, pageY: 0
    clientX: 0, clientY: 0
    screenX: 0, screenY: 0