<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thủ thuật jQuery</title>
	<atom:link href="https://thienanblog.com/category/javascript/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>https://thienanblog.com/category/javascript/jquery/</link>
	<description>Javascript - PHP - SEO - Web Development</description>
	<lastBuildDate>Tue, 07 Jul 2015 05:49:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://thienanblog.com/wp-content/uploads/2017/05/TAB_favicon.ico.png</url>
	<title>Thủ thuật jQuery</title>
	<link>https://thienanblog.com/category/javascript/jquery/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Phóng to hình ảnh với jQuery EasyZoom</title>
		<link>https://thienanblog.com/javascript/jquery/phong-to-hinh-anh-voi-jquery-easyzoom/</link>
					<comments>https://thienanblog.com/javascript/jquery/phong-to-hinh-anh-voi-jquery-easyzoom/#respond</comments>
		
		<dc:creator><![CDATA[Ân Vũ]]></dc:creator>
		<pubDate>Tue, 07 Jul 2015 05:35:36 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[cách sử dụng jquery easyzoom]]></category>
		<category><![CDATA[hướng dẫn easyzoom]]></category>
		<category><![CDATA[hướng dẫn phóng to hình ảnh js]]></category>
		<category><![CDATA[jQuery EasyZoom là gì]]></category>
		<category><![CDATA[phóng lớn hình ảnh js]]></category>
		<category><![CDATA[phóng to hình ảnh js]]></category>
		<category><![CDATA[plugin zoom hình ảnh]]></category>
		<category><![CDATA[sử dụng jquery zoom]]></category>
		<category><![CDATA[sử dụng js zoom hình]]></category>
		<category><![CDATA[Zoom hình ảnh js]]></category>
		<guid isPermaLink="false">https://thienanblog.com/?p=166</guid>

					<description><![CDATA[<p>Giới thiệu và cài đặt Tác giả: Alen Grakalic Website: http://i-like-robots.github.io/EasyZoom Plugin này được tạo ra để giúp chúng ta có thể hiển thị những hình ảnh cỡ lớn giúp&#8230;</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/phong-to-hinh-anh-voi-jquery-easyzoom/">Phóng to hình ảnh với jQuery EasyZoom</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Giới thiệu và cài đặt</h2>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/07/ny-zoom.jpg"><img fetchpriority="high" decoding="async" class=" wp-image-175 size-medium aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/07/ny-zoom-300x225.jpg" alt="Zoom hình ảnh" width="300" height="225" srcset="https://thienanblog.com/wp-content/uploads/2015/07/ny-zoom-300x225.jpg 300w, https://thienanblog.com/wp-content/uploads/2015/07/ny-zoom-1024x768.jpg 1024w, https://thienanblog.com/wp-content/uploads/2015/07/ny-zoom.jpg 1600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Tác giả: Alen Grakalic</p>
<p>Website: <a href="http://i-like-robots.github.io/EasyZoom">http://i-like-robots.github.io/EasyZoom</a></p>
<p>Plugin này được tạo ra để giúp chúng ta có thể hiển thị những hình ảnh cỡ lớn giúp người dùng có thể xem rõ hình ảnh hơn. Nhất là ở những Website bán hàng, khi mà người dùng rất cần một hình ảnh chân thật, to và rõ ràng để họ có thể xem sản phẩm một cách tốt nhất trước khi quyết định mua.</p>
<p>Plugin này ra đời để giúp ta làm điều đó bằng cách tải hình ảnh lớn khi chúng ta rê chuột vào hình ảnh nhỏ, tạo cảm giác cho người xem như chúng ta đang dùng chức năng<strong> Zoom In</strong> (Phóng to) hình ảnh lên vậy.</p>
<p>Để có thể sử dụng Plugin các bạn cần theo các bước sau:</p>
<ol>
<li>Truy cập vào <a href="https://github.com/i-like-robots/EasyZoom/zipball/master">https://github.com/i-like-robots/EasyZoom/zipball/master</a> . Sau đó hãy tải file nén về và giải nén ra và chúng ta sẽ có cấu trúc thư mục như sau:</li>
</ol>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/07/1.-Cau-truc-thu-muc.png"><img decoding="async" class=" size-full wp-image-167 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/07/1.-Cau-truc-thu-muc.png" alt="Cau truc thu muc" width="178" height="327" srcset="https://thienanblog.com/wp-content/uploads/2015/07/1.-Cau-truc-thu-muc.png 178w, https://thienanblog.com/wp-content/uploads/2015/07/1.-Cau-truc-thu-muc-163x300.png 163w" sizes="(max-width: 178px) 100vw, 178px" /></a></p>
<p>&nbsp;</p>
<ol start="2">
<li>Các bạn hãy tìm 2 file cần thiết sau đây: <span class="lang:default highlight:0 decode:true  crayon-inline ">easyzoom.js</span> <strong> </strong>và <span class="lang:default highlight:0 decode:true  crayon-inline ">easyzoom.css</span> <strong>.</strong></li>
<li>Tiến hành thêm thư viện vào trong website của chúng ta, nhưng các bạn cũng cần phải tải thư viện jQuery tại <a href="http://jquery.com">http://jquery.com</a> về trước nhé:</li>
</ol>
<p>&nbsp;</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/07/2.-Them-thu-vien.png"><img decoding="async" class=" size-full wp-image-168 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/07/2.-Them-thu-vien.png" alt="Them thu vien" width="505" height="48" srcset="https://thienanblog.com/wp-content/uploads/2015/07/2.-Them-thu-vien.png 505w, https://thienanblog.com/wp-content/uploads/2015/07/2.-Them-thu-vien-300x29.png 300w" sizes="(max-width: 505px) 100vw, 505px" /></a></p>
<ol start="4">
<li>(Tùy chọn) Nếu như bạn không có sẵn hình ảnh để Demo Plugin này có thể Copy luôn thư mục <span class="lang:default highlight:0 decode:true  crayon-inline ">example-images</span>  bên trong để sử dụng.</li>
<li>Cài đặt hoàn tất</li>
</ol>
<h2>Sử dụng</h2>
<p>Để sử dụng Plugin này, các bạn cần phải làm chính xác những gì tôi hướng dẫn. Bởi vì, website của tác giả hướng dẫn rất sơ sài. Và chủ yếu nhờ vào cách sử dụng của tác giả và tôi hiểu ra cách sử dụng của nó.</p>
<h3><strong>Tính năng Overlay (Che Phủ)</strong></h3>
<p>Đầu tiên, các bạn cần chuẩn bị các hình ảnh ở những bước trước chúng ta đã làm, sau đó hãy tạo ra một file và bạn có thể tùy nghi đặt tên, ở đây tôi sẽ đặt là <span class="lang:default decode:true crayon-inline">overlay.html</span>  và có cấu trúc như sau:</p>
<pre class="lang:default decode:true ">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;EasyZoom - Thienanblog.com&lt;/title&gt;
	&lt;link rel="stylesheet" type="text/css" href="css/easyzoom.css"&gt;
	&lt;script type="text/javascript" src="js/jquery-1.11.3.min.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="js/easyzoom.js"&gt;&lt;/script&gt;
	&lt;style type="text/css"&gt;
	.wrap {
		width: 940px;
		margin: 0px auto;
		padding: 5px 15px;
	}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div class="wrap"&gt;
		&lt;div class="easyzoom easyzoom--overlay ten-class-tu-dat"&gt;
			&lt;a href="img/2_zoom.jpg"&gt;
				&lt;!-- WIDTH | HEIGHT có thể ấn định bằng CSS thay vì HTML --&gt;
				&lt;img src="img/2_standard.jpg" alt="" width="500" height="400"&gt; 
			&lt;/a&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;script type="text/javascript"&gt;
		// Instantiate EasyZoom instances
		var $easyzoom = $('.ten-class-tu-dat').easyZoom();
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Khi chạy ví dụ trên các bạn sẽ thấy như sau:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/07/3.-Overlay.png"><img loading="lazy" decoding="async" class=" size-full wp-image-169 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/07/3.-Overlay.png" alt="Overlay" width="1021" height="401" srcset="https://thienanblog.com/wp-content/uploads/2015/07/3.-Overlay.png 1021w, https://thienanblog.com/wp-content/uploads/2015/07/3.-Overlay-300x118.png 300w" sizes="auto, (max-width: 1021px) 100vw, 1021px" /></a></p>
<p>&nbsp;</p>
<p>Vậy do đâu Plugin này có thể chạy được, các bạn hãy chú ý các điểm sau:</p>
<ol>
<li><span class="lang:default decode:true  crayon-inline ">&lt;div class=&#8221;easyzoom easyzoom&#8211;overlay ten-class-tu-dat&#8221;&gt;</span>  : các tên lớp cần thiết để Plugin có thể chạy. Và trong đó bạn để ý <span class="lang:default decode:true  crayon-inline ">easyzoom—overlay</span> <strong> </strong>chính là tên tính năng sẽ chạy khi thiết lập.</li>
<li>Bên trong <span class="lang:default decode:true  crayon-inline ">&lt;div class=&#8221;easyzoom easyzoom&#8211;overlay ten-class-tu-dat&#8221;&gt;</span>  sẽ có cấu trúc như sau:</li>
</ol>
<pre class="lang:default decode:true ">&lt;a href="img/2_zoom.jpg"&gt;
	&lt;!-- WIDTH | HEIGHT có thể ấn định bằng CSS thay vì HTML --&gt;
	&lt;img src="img/2_standard.jpg" alt="" width="500" height="400"&gt; 
&lt;/a&gt;</pre>
<ol start="3">
<li><span class="lang:default decode:true  crayon-inline ">&lt;a href=&#8221;img/2_zoom.jpg&#8221;&gt;</span>  : chứa thẻ href chính là đường dẫn đến hình ảnh lớn của bạn.</li>
<li><span class="lang:default decode:true  crayon-inline">&lt;img src=&#8221;img/2_standard.jpg&#8221; alt=&#8221;&#8221; width=&#8221;500&#8243; height=&#8221;400&#8243;&gt;</span>  : Chứa hình ảnh nhỏ và hiển thị ra bên ngoài trước khi người dùng rê chuột vào. Các bạn lưu ý<strong> chiều rộng</strong> và <strong>chiều cao</strong> (Width &amp; Height), các bạn phải ấn định <strong>nhỏ hơn</strong> tấm hình lớn nhé và có thể tùy nghi chọn kích thước phù hợp với website của mình.</li>
<li>Đoạn mã trong cặp thẻ <span class="lang:default decode:true  crayon-inline ">&lt;script&gt;</span>  đơn giản chỉ như sau:</li>
</ol>
<pre class="lang:default decode:true">&lt;script type="text/javascript"&gt;
	// Instantiate EasyZoom instances
	var $easyzoom = $('.ten-class-tu-dat').easyZoom();
&lt;/script&gt;</pre>
<ol start="6">
<li>Như vậy là bạn đã hoàn tất việc chạy Ví dụ đầu tiên với tính năng &#8220;<strong>Overlay</strong>&#8221; rồi đấy.</li>
</ol>
<h3>Tính năng Ajacent (Liền kề)</h3>
<p>Các bạn có thể chuẩn bị cấu trúc HTML như sau và lưu tên file là <strong>ajacent.html</strong> :</p>
<pre class="lang:default decode:true ">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;EasyZoom - Thienanblog.com&lt;/title&gt;
	&lt;link rel="stylesheet" type="text/css" href="css/easyzoom.css"&gt;
	&lt;script type="text/javascript" src="js/jquery-1.11.3.min.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="js/easyzoom.js"&gt;&lt;/script&gt;
	&lt;style type="text/css"&gt;
	.wrap {
		width: 940px;
		margin: 0px auto;
		padding: 5px 15px;
	}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div class="wrap"&gt;
		&lt;div class="easyzoom easyzoom--adjacent ten-class-tu-dat"&gt;
			&lt;a href="img/2_zoom.jpg"&gt;
				&lt;!-- WIDTH | HEIGHT có thể ấn định bằng CSS thay vì HTML --&gt;
				&lt;img src="img/2_standard.jpg" alt="" width="500" height="400"&gt; 
			&lt;/a&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;script type="text/javascript"&gt;
		// Instantiate EasyZoom instances
		var $easyzoom = $('.ten-class-tu-dat').easyZoom();
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Khi chạy ví dụ trên các bạn sẽ thấy như sau:</p>
<p><img loading="lazy" decoding="async" class=" size-full wp-image-172 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/07/4.-Ajacent.png" alt="4. Ajacent" width="1033" height="416" srcset="https://thienanblog.com/wp-content/uploads/2015/07/4.-Ajacent.png 1033w, https://thienanblog.com/wp-content/uploads/2015/07/4.-Ajacent-300x121.png 300w, https://thienanblog.com/wp-content/uploads/2015/07/4.-Ajacent-1024x412.png 1024w" sizes="auto, (max-width: 1033px) 100vw, 1033px" /></p>
<p>Tính năng này giúp chúng ta khi rê chuột vô hình ảnh, thì đồng thời Plugin sẽ tạo ra một hình ảnh nữa nằm bên phải và có chiều dài và cao bằng với hình ảnh được rê chuột. Tính năng này các bạn thường thấy ở các Website bán hàng như Ebay.</p>
<p>Và trong ví dụ này, cách sử dụng cũng giống ở ví dụ trước ở tính năng “<strong>Overlay</strong>” chỉ khác duy nhất chính là tên class mà các bạn sử dụng là <span class="lang:default decode:true  crayon-inline ">&lt;div class=&#8221;easyzoom easyzoom&#8211;adjacent ten-class-tu-dat&#8221;&gt;</span>  và trong đó class <span class="lang:default decode:true  crayon-inline ">easyzoom—adjacent</span> <strong> </strong>đại diện cho tính năng “<strong>Ajacent</strong>”.</p>
<h3>Tính năng Thumbnail – Overlay (Hình thu nhỏ &#8211; Che Phủ)</h3>
<p>Tính năng này là sự kết hợp giữa thư viện hình ảnh (Gallery) nhờ vào các hình ảnh thu nhỏ kết hợp với tính năng “Overlay” để phóng to hình ảnh được chọn và rê chuột vào.</p>
<p>Các bạn cần chuẩn bị cấu trúc file <span class="lang:default highlight:0 decode:true  crayon-inline ">thumbnail-overlay.html</span>  như sau:</p>
<pre class="lang:default decode:true ">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;EasyZoom - Thienanblog.com&lt;/title&gt;
	&lt;link rel="stylesheet" type="text/css" href="css/easyzoom.css"&gt;
	&lt;script type="text/javascript" src="js/jquery-1.11.3.min.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="js/easyzoom.js"&gt;&lt;/script&gt;
	&lt;style type="text/css"&gt;
	.wrap {
		width: 940px;
		margin: 0px auto;
		padding: 5px 15px;
	}

	ul {
		list-style: none;
	}

	ul li {
		float:left;
		margin: 5px;
	}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div class="wrap"&gt;
		&lt;div class="easyzoom easyzoom--overlay easyzoom--with-thumbnails ten-class-tu-dat"&gt;
			&lt;a href="img/3_zoom_1.jpg"&gt;
				&lt;!-- WIDTH | HEIGHT có thể ấn định bằng CSS thay vì HTML --&gt;
				&lt;img src="img/3_standard_1.jpg" alt="" width="640" height="360"&gt;
			&lt;/a&gt;
		&lt;/div&gt;
		&lt;ul class="thumbnails"&gt;
			&lt;li&gt;
				&lt;a href="img/3_zoom_1.jpg" data-standard="img/3_standard_1.jpg"&gt;
					&lt;img src="img/3_thumbnail_1.jpg" alt=""&gt;
				&lt;/a&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;a href="img/3_zoom_2.jpg" data-standard="img/3_standard_2.jpg"&gt;
					&lt;img src="img/3_thumbnail_2.jpg" alt=""&gt;
				&lt;/a&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;a href="img/3_zoom_3.jpg" data-standard="img/3_standard_3.jpg"&gt;
					&lt;img src="img/3_thumbnail_3.jpg" alt=""&gt;
				&lt;/a&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;a href="img/3_zoom_4.jpg" data-standard="img/3_standard_4.jpg"&gt;
					&lt;img src="img/3_thumbnail_4.jpg" alt=""&gt;
				&lt;/a&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;
	&lt;script type="text/javascript"&gt;
		// Instantiate EasyZoom instances
		var $easyzoom = $('.ten-class-tu-dat').easyZoom();
		var api = $easyzoom.data('easyZoom');

		$('ul').on('click', 'a', function(event) {
			event.preventDefault();
			api.swap($(this).data('standard'), $(this).attr('href'));
		});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Khi chạy ví dụ trên chúng ta sẽ được như sau:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/07/5.Thumbnail-Overlay.png"><img loading="lazy" decoding="async" class=" size-full wp-image-170 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/07/5.Thumbnail-Overlay.png" alt="5.Thumbnail - Overlay" width="1333" height="534" srcset="https://thienanblog.com/wp-content/uploads/2015/07/5.Thumbnail-Overlay.png 1333w, https://thienanblog.com/wp-content/uploads/2015/07/5.Thumbnail-Overlay-300x120.png 300w, https://thienanblog.com/wp-content/uploads/2015/07/5.Thumbnail-Overlay-1024x410.png 1024w" sizes="auto, (max-width: 1333px) 100vw, 1333px" /></a></p>
<p>&nbsp;</p>
<p>Rất đẹp mắt đúng không nào, chỉ khác ở các ví dụ một tí đó chính là chúng ta cần đến thẻ &lt;ul&gt; để hiển thị các hình ảnh nhỏ bên dưới để người dùng có thể chọn nó. Và đây chính là cấu trúc chung khi các bạn sử dụng Plugin này:</p>
<pre class="lang:default decode:true ">&lt;ul class="thumbnails"&gt;
	&lt;li&gt;
		&lt;a href="img/3_zoom_1.jpg" data-standard="img/3_standard_1.jpg"&gt;
			&lt;img src="img/3_thumbnail_1.jpg" alt=""&gt;
		&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="img/3_zoom_2.jpg" data-standard="img/3_standard_2.jpg"&gt;
			&lt;img src="img/3_thumbnail_2.jpg" alt=""&gt;
		&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="img/3_zoom_3.jpg" data-standard="img/3_standard_3.jpg"&gt;
			&lt;img src="img/3_thumbnail_3.jpg" alt=""&gt;
		&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="img/3_zoom_4.jpg" data-standard="img/3_standard_4.jpg"&gt;
			&lt;img src="img/3_thumbnail_4.jpg" alt=""&gt;
		&lt;/a&gt;
	&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Trong đó, <span class="lang:default decode:true  crayon-inline ">&lt;a href=&#8221;img/3_zoom_1.jpg&#8221; data-standard=&#8221;img/3_standard_1.jpg&#8221;&gt;</span>  có thuộc tính <span class="lang:default decode:true  crayon-inline">href</span> chính là đường dẫn đến <strong>hình ảnh phóng lớn</strong> và <span class="lang:default decode:true  crayon-inline ">data-standard</span>  là <strong>hình ảnh thu nhỏ</strong> ở phía dưới hình chính của chúng ta.</p>
<p>Và các bạn lại cần phải chú ý một điểm vẫn giống các ví dụ trước đó chính là thẻ <span class="lang:default decode:true  crayon-inline">&lt;div class=&#8221;easyzoom easyzoom&#8211;overlay easyzoom&#8211;with-thumbnails ten-class-tu-dat&#8221;&gt;</span>  đã có thêm 1 class mới chính là <span class="lang:default decode:true  crayon-inline ">easyzoom&#8211;with-thumbnails</span>  để giúp nó hiểu đây chính là <strong>thư viện hình ảnh</strong>.</p>
<p>Tuy nhiên, khác biệt lớn nhất chính là đoạn mã Javascript:</p>
<pre class="lang:default decode:true ">&lt;script type="text/javascript"&gt;
	// Instantiate EasyZoom instances
	var $easyzoom = $('.ten-class-tu-dat').easyZoom();
	var api = $easyzoom.data('easyZoom');

	$('ul').on('click', 'a', function(event) {
		event.preventDefault();
		api.swap($(this).data('standard'), $(this).attr('href'));
	});
&lt;/script&gt;</pre>
<p>Trong đó, <span class="lang:default decode:true  crayon-inline ">$easyzoom.data(&#8216;easyZoom&#8217;)</span> sẽ trả về cho chúng ta một <span class="lang:default highlight:0 decode:true  crayon-inline ">Object</span> chứa các phương thức để chúng ta có thể cấu hình Plugin này. Và mỗi khi sự kiện <span class="lang:default highlight:0 decode:true  crayon-inline ">click</span> lên tấm hình ở thư viện thì nó sẽ bị đoạn mã ngăn chặn không cho<strong> refresh lại trang</strong> thông qua phương thức <span class="lang:default decode:true  crayon-inline ">event.preventDefault()</span> . Và ở cách dùng <span class="lang:default decode:true  crayon-inline ">api.swap()</span>  thì các bạn có thể hiểu đơn giản tiếng anh nó đã có nghĩa là “<strong>hoán đổi</strong>”, và <strong>hoán đổi cái gì</strong>? Chính là đường dẫn hình ảnh trong <span class="lang:default highlight:0 decode:true  crayon-inline ">data-standard</span>  mà chúng ta truyền vào <span class="lang:default decode:true  crayon-inline ">href</span> trong thẻ <span class="lang:default decode:true  crayon-inline ">&lt;a&gt;</span>  của chúng ta. Giúp cho Plugin hiểu là hình ảnh mới đã được cấu hình các hình ảnh nhỏ và hình ảnh phóng to.</p>
<p>Và có một điều thú vị là khi các bạn thay đổi <span class="lang:default decode:true  crayon-inline">easyzoom easyzoom—overlay</span>  trong thẻ <span class="lang:default decode:true  crayon-inline ">&lt;div class=&#8221;easyzoom easyzoom&#8211;overlay easyzoom&#8211;with-thumbnails ten-class-tu-dat&#8221;&gt;</span>  các bạn sẽ lại có được luôn cả tính năng “<strong>Ajacent</strong>” mà chúng ta đã được thử qua trước đó.</p>
<h2>Tóm tắt các tính năng cơ bản trong jQuery EasyZoom</h2>
<table>
<tbody>
<tr>
<td width="162">Tên tính năng</td>
<td width="438">Class được sử dụng</td>
</tr>
<tr>
<td width="162">Overlay</td>
<td width="438">easyzoom easyzoom&#8211;overlay</td>
</tr>
<tr>
<td width="162">Ajacent</td>
<td width="438">easyzoom easyzoom&#8211;ajacent</td>
</tr>
<tr>
<td width="162">Thumbnail &#8211; Overlay</td>
<td width="438">easyzoom easyzoom&#8211;overlay easyzoom&#8211;with-thumbnails</td>
</tr>
<tr>
<td width="162">Thumbnail &#8211; Ajacent</td>
<td width="438">easyzoom easyzoom&#8211;ajacent  easyzoom&#8211;with-thumbnails</td>
</tr>
</tbody>
</table>
<p>Qua bài viết này, các bạn đã có thể sử dụng được các tính năng cơ bản nhất của Plugin rồi, ngoài ra các bạn cũng nên tham khảo thêm trong tài liệu của tác giả để có thể hiểu về Plugin này hơn nếu như có nhu cầu chuyên sâu và cao cấp hơn.</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/07/jQuery-EasyZoom.rar">Các bạn có thể tải toàn bộ Source tại đây</a></p>
<p>Xin cám ơn các độc giả đã đón xem bài viết này.</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/phong-to-hinh-anh-voi-jquery-easyzoom/">Phóng to hình ảnh với jQuery EasyZoom</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thienanblog.com/javascript/jquery/phong-to-hinh-anh-voi-jquery-easyzoom/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hướng dẫn jQuery Ajax toàn tập</title>
		<link>https://thienanblog.com/javascript/jquery/huong-dan-jquery-ajax-toan-tap/</link>
					<comments>https://thienanblog.com/javascript/jquery/huong-dan-jquery-ajax-toan-tap/#respond</comments>
		
		<dc:creator><![CDATA[Ân Vũ]]></dc:creator>
		<pubDate>Sat, 27 Jun 2015 11:38:56 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax jquery]]></category>
		<category><![CDATA[ajax jquery là gì]]></category>
		<category><![CDATA[ajax là gì]]></category>
		<category><![CDATA[ajax trong jquery]]></category>
		<category><![CDATA[cách sử dụng jquery ajax]]></category>
		<category><![CDATA[hướng dẫn ajax jquery]]></category>
		<category><![CDATA[hướng dẫn sử dụng jquery ajax]]></category>
		<category><![CDATA[kĩ thuật ajax trong jquery]]></category>
		<guid isPermaLink="false">https://thienanblog.com/?p=147</guid>

					<description><![CDATA[<p>Giới thiệu Ajax không phải là ngôn ngữ mà là kĩ thuật trong Javascript, giúp chúng ta tạo ra các ứng dụng Web Không đồng bộ (Asynchronous). Nói dễ hiểu&#8230;</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/huong-dan-jquery-ajax-toan-tap/">Hướng dẫn jQuery Ajax toàn tập</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Giới thiệu</h2>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/photo.png"><img loading="lazy" decoding="async" class=" size-full wp-image-155 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/photo.png" alt="Hướng dẫn jQuery Ajax" width="250" height="250" srcset="https://thienanblog.com/wp-content/uploads/2015/06/photo.png 250w, https://thienanblog.com/wp-content/uploads/2015/06/photo-150x150.png 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /></a></p>
<p>Ajax không phải là ngôn ngữ mà là kĩ thuật trong Javascript, giúp chúng ta tạo ra các ứng dụng Web Không đồng bộ (Asynchronous). Nói dễ hiểu hơn là kĩ thuật “load dữ liệu không cần load lại trang” hay “load một phần website”, giúp website linh hoạt, nhanh chóng và thân thiện với người dùng hơn.</p>
<h2>Hướng dẫn sử dụng</h2>
<p>Để sử dụng kĩ thuật Ajax trong jQuery, trước hết các bạn cần chuẩn bị cho tôi đó chính là thư viện jQuery được tải về từ <a href="http://jquery.com/download">http://jquery.com/download</a> . Trong đó, jQuery sẽ có 2 phiên bản là 1.x và 2.x thì chúng ta có thể chọn lựa bản nào cũng được. Hai bản chỉ khác nhau ở việc hỗ trợ các trình duyệt cũ và mới mà thôi, cụ thể ở đây chính là IE 8 trở về trước. Ở đây tôi sẽ dùng bản jQuery 1.x để dễ dàng cho việc các bạn độc giả thử nghiệm hơn.</p>
<p><span style="color: #ff0000;"><strong>Lưu ý:</strong></span> Các bạn cũng cần phải có ít nhất 1 Web Server như (XAMPP, WampServer,…) hoặc có thể sử dụng mini Webserver Mongoose cho HTML tại đây <a href="https://thienanblog.com/wp-content/uploads/2015/06/mongoose-free-5.3.5.zip">mongoose-free-5.3.5</a> và có thể đọc hướng dẫn sau để sử dụng <a href="https://cesanta.com/docs/FileSharing.shtml">https://cesanta.com/docs/FileSharing.shtml</a></p>
<p>Sau đây, tôi sẽ giới thiệu cho các bạn các phương thức Ajax thông dụng mà jQuery đã viết sẵn:</p>
<h2>Phương thức “load()”</h2>
<p>Dùng trong các trường hợp cần load dữ liệu đơn giản và không cần thiết phải can thiệp vào dữ liệu trả về.</p>
<p>Chuẩn bị HTML như sau trong cặp thẻ “<span class="lang:default decode:true  crayon-inline ">&lt;body&gt;</span> ”:</p>
<pre class="lang:default decode:true">	&lt;div&gt;
		&lt;a href="#" id="load-du-lieu"&gt;Load dữ liệu&lt;/a&gt;
	&lt;/div&gt;
	&lt;div id="noidung"&gt;&lt;/div&gt;</pre>
<p>Và trong cặp thẻ “<span class="lang:default decode:true  crayon-inline ">&lt;script&gt;</span> ”:</p>
<pre class="lang:default decode:true">	$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			console.log($('#noidung').load('vidu1.html'));
		});
	});</pre>
<p>Và như các bạn thấy trong đoạn code ở cặp thẻ “<span class="lang:default decode:true  crayon-inline ">&lt;script&gt;</span> ”, các bạn thấy được tôi có sử dụng một file HTML khác là “<strong>vidu1.html</strong>” để chúng ta sẽ load dữ liệu từ nó vào. Các bạn sẽ được cấu trúc đầy đủ và lưu tên file là “<strong>index.html</strong>” (Tên “<strong>index</strong>” các bạn có thể tự đặt) như sau:</p>
<pre class="lang:default decode:true">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;Hướng dẫn jQuery Ajax - Thienanblog.com&lt;/title&gt;
	&lt;script type="text/javascript" src="jquery-1.11.3.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div&gt;
		&lt;a href="#" id="load-du-lieu"&gt;Load dữ liệu&lt;/a&gt;
	&lt;/div&gt;
	&lt;div id="noidung"&gt;
		
	&lt;/div&gt;
	&lt;script type="text/javascript"&gt;
	$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			$('#noidung').load('vidu1.html');
		});
	});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Cấu trúc file “<strong>vidu1.html</strong>” sẽ như sau:</p>
<pre class="lang:default decode:true">&lt;p&gt;Đây là vidu1.html&lt;/p&gt;
&lt;p id="chuoi-can-lay"&gt;Chuỗi cần lấy tiếp theo&lt;/p&gt;</pre>
<p>Chúng ta sẽ có cấu trúc thư mục tổng thể như sau trong ví dụ này:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/1.-Cau-truc-thu-muc.png"><img loading="lazy" decoding="async" class=" size-full wp-image-149 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/1.-Cau-truc-thu-muc.png" alt="Cau truc thu muc" width="181" height="80" /></a></p>
<p>Và trong cặp thẻ “&lt;script&gt;” tôi sẽ nhắc lại một số cú pháp tôi đã xài để bạn nào quên hoặc chưa biết thì có thể tìm hiểu lại:</p>
<ol>
<li><span class="lang:default decode:true  crayon-inline ">$(document).ready(function(){…}) </span> : tương tự với sự kiện “<span class="lang:default decode:true  crayon-inline ">onload</span> ”, có nghĩa là code của bạn chỉ được thực thi khi trang được load hoàn tất.</li>
<li>Sự kiện “<span class="lang:default decode:true  crayon-inline ">click</span> ” đối số mặc định “<strong>e</strong>” được sử dụng phương thức “<span class="lang:default decode:true  crayon-inline ">preventDefault()</span> ” giúp chặn lại việc load lại trang từ trình duyệt.</li>
<li><strong><span class="lang:default decode:true  crayon-inline ">$(‘#id-can-lay’)</span>  </strong>: trỏ tới thẻ HTML mà các bạn cần lấy có “<span class="lang:default decode:true  crayon-inline ">id</span> ” là<strong> “<span class="lang:default decode:true  crayon-inline ">#id-can-lay</span> ”</strong>. Tương tự với việc các bạn sử dụng cho “<span class="lang:default decode:true  crayon-inline ">class</span> ”.</li>
<li><strong><span class="lang:default decode:true  crayon-inline ">load()</span>  </strong>: có đối số là đường dẫn đến file các bạn cần lấy.</li>
</ol>
<p>Và bây giờ, chúng ta hãy thử chạy Ví dụ trên xem thế nào nhé:</p>
<p>Bước 1: Load file “<strong>index.html</strong>” mà chúng ta đã xây dựng bên trên:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/2.Buoc-1.png"><img loading="lazy" decoding="async" class=" size-full wp-image-150 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/2.Buoc-1.png" alt="Buoc 1" width="211" height="155" /></a></p>
<p>Bước 2: Nhấn vào nút “<strong>Load dữ liệu</strong>” và chạy thử:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/2.Buoc-2.png"><img loading="lazy" decoding="async" class=" size-full wp-image-151 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/2.Buoc-2.png" alt="Buoc 2" width="168" height="189" /></a></p>
<p>Như vậy, sau 2 bước trên chúng ta đã load thành công dữ liệu từ “<strong>vidu1.html</strong>” rồi đấy. Và một câu hỏi đặt ra, đó chính là có cách nào mà chúng ta có thể chỉ lấy chuỗi mà chúng ta cần sau khi load dữ liệu vào hay không? Các bạn hãy xem lại cấu trúc “<strong>vidu1.html</strong>” nhé:</p>
<pre class="lang:default decode:true">&lt;p&gt;Đây là vidu1.html&lt;/p&gt;
&lt;p id="chuoi-can-lay"&gt;Chuỗi cần lấy tiếp theo&lt;/p&gt;</pre>
<p>Các bạn thấy gì trong ví dụ này? Có phải chúng ta có 2 thẻ “<span class="lang:default decode:true  crayon-inline ">&lt;p&gt;</span> ” ngăn cách mỗi chuỗi đúng không nào. Và nếu trong trường hợp này, tôi muốn lấy ra thẻ “<span class="lang:default decode:true  crayon-inline ">&lt;p&gt;</span> ” có “<span class="lang:default decode:true  crayon-inline ">id</span> ” là “<span class="lang:default decode:true  crayon-inline ">chuoi-can-lay</span> ”. Thì tôi sẽ chỉnh sửa lại một tí đoạn code trong “<span class="lang:default decode:true  crayon-inline ">&lt;script&gt;</span> ” của chúng ta như sau:</p>
<pre class="lang:default decode:true">	$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			$('#noidung').load('vidu1.html #chuoi-can-lay');
			
		});
	});</pre>
<p>Và sau đó các bạn chạy và load lại dữ liệu thì chúng ta sẽ được như sau:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/3.Lay-chuoi-can-lay.png"><img loading="lazy" decoding="async" class=" size-full wp-image-152 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/3.Lay-chuoi-can-lay.png" alt="Lay chuoi can lay" width="163" height="161" /></a></p>
<p>Thật bất ngờ đúng không nào? Như vậy, để có thể bóc tách dữ liệu từ file mà chúng ta load lên, và ở đây chính là file “<strong>vidu1.html</strong>” thì chúng ta cần đặt “<span class="lang:default decode:true  crayon-inline ">id</span> ” cho thẻ bao lấy dữ liệu mà chúng ta cần tách lọc. Sau đó thêm vào <strong>ĐẰNG SAU </strong>đường dẫn như cách chúng ta dùng jQuery để trỏ đến một thẻ trong HTML nào đó vậy.</p>
<p>Vậy là chúng ta đã hoàn tất tìm hiểu xong được phương thức “<span class="lang:default decode:true  crayon-inline ">load()</span> ” trong jQuery Ajax rồi đấy.</p>
<h2>Phương thức “get()” và “post()”</h2>
<p>Ở 2 phương thức này thì trong đó phương thức “<span class="lang:default decode:true  crayon-inline ">get()</span> ” giống “<span class="lang:default decode:true  crayon-inline ">load()</span> ” về mặt kĩ thuật đó chính là dùng “<strong>method</strong>” là “<strong>GET</strong>” trong “<span class="lang:default decode:true  crayon-inline ">&lt;form&gt;</span> ”. Tương tự “<span class="lang:default decode:true  crayon-inline ">post()</span> ” sẽ tượng trưng cho “<strong>method</strong>” là “<strong>POST</strong>” của “<span class="lang:default decode:true  crayon-inline ">&lt;form&gt;</span> ”. Cả 2 phương thức này đều cách viết tắt của phương thức “ajax()” mà chúng ta sẽ làm quen ở phần tới.</p>
<h3><strong>Phương thức “get()”</strong></h3>
<p>Vì có sự tương đồng giữa “<span class="lang:default decode:true  crayon-inline ">get()</span> <strong>” </strong>và “<span class="lang:default decode:true  crayon-inline ">load()</span> ” nên chắc hẳn cách dùng cũng không có phần khác lạ so với các ví dụ ở trên, nhưng cần lưu ý một số cú pháp để tránh nhầm lẫn với “<span class="lang:default decode:true  crayon-inline ">load()</span> ”:</p>
<pre class="lang:default decode:true">	$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			$.get('vidu1.html', function(ketqua) {
				$('#noidung').html(ketqua);
				$('#noidung').html($('#chuoi-can-lay').html());
			});
			
		});
	});</pre>
<p>Kết quả khi chạy ví dụ trên:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/4.-Lay-chuoi-can-lay-cua-get.png"><img loading="lazy" decoding="async" class=" size-full wp-image-153 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/4.-Lay-chuoi-can-lay-cua-get.png" alt="4. Lay chuoi can lay cua get" width="165" height="167" /></a></p>
<ol>
<li>Đoạn code này cho bạn thấy rằng để sử dụng được phương thức “<span class="lang:default decode:true  crayon-inline ">get()</span> ”, các bạn cần dùng đến biến “<span class="lang:default decode:true  crayon-inline ">$</span> ” (hay “<span class="lang:default decode:true  crayon-inline ">jQuery</span> ”) sau đó sử dụng thẳng phương thức “<span class="lang:default decode:true  crayon-inline ">get()</span> ” chứ không giống như “<span class="lang:default decode:true  crayon-inline ">$(‘#id-can-lay’).load()</span> ” như ví dụ trước ta đã xem ở phương thức “<span class="lang:default decode:true  crayon-inline ">load()</span> ”.</li>
<li>Đối số truyền vào không thể tách lọc được dữ liệu trả về thẳng trong đường dẫn như phương thức “<span class="lang:default decode:true  crayon-inline ">load()</span> ”.</li>
<li>Kết quả trả về sẽ thông qua đối số thứ 2 của phương thức “<span class="lang:default decode:true  crayon-inline ">get()</span> ” là một <a href="https://thienanblog.com/javascript/javascript-co-ban/bai-6-anonymous-function-va-closure/">Anonymous Function</a> có đối số mặc định trả về là “<span class="lang:default decode:true  crayon-inline ">ketqua</span> ” như chúng ta đã thấy. Các bạn có thể dùng “<span class="lang:default decode:true  crayon-inline ">console.log(ketqua)</span> ” và bật F12 của trình duyệt trên Chrome/Mozilla/Opera để xem kết quả trả về khi click vào.</li>
<li>Và để tách lọc dữ liệu từ “<span class="lang:default decode:true  crayon-inline ">ketqua</span> ” chúng ta cần phải ghi nó vào “<strong>DOM</strong>” hay một nơi nào đó trong cặp thẻ “<span class="lang:default decode:true  crayon-inline ">&lt;body&gt;</span> ” của chúng ta. Sau đó chúng ta dùng tiếp “<span class="lang:default decode:true  crayon-inline ">$(‘#id-can-lay’).html()</span> ” để tách lọc dữ liệu như ở phương thức “<span class="lang:default decode:true  crayon-inline ">load()</span> ” mà chúng ta đã xài trước đó. Các bạn có thể bỏ đi dòng “<span class="lang:default decode:true  crayon-inline ">$(&#8216;#noidung&#8217;).html($(&#8216;#chuoi-can-lay&#8217;).html())</span> ” để thấy sự tương đồng giữa “<span class="lang:default decode:true  crayon-inline ">load()</span> ” và “<span class="lang:default decode:true  crayon-inline ">get()</span> ” chỉ khác nhau về cách dùng.</li>
</ol>
<p>Ngoài ra “<span class="lang:default decode:true  crayon-inline ">get()</span> ” còn hỗ trợ bạn truyền dữ liệu sang file lấy dữ liệu, tuy nhiên cái này thuộc về sự hiểu biết của các bạn trong kĩ thuật lập trình Web nên tôi không nói nhiều ở đây, không thì sẽ loãng bài viết.</p>
<h3><strong>Phương Thức “post()”</strong></h3>
<p>Trong phương thức này, cần có ít nhất một ngôn ngữ động ở phía hệ thống để nhận lấy dữ liệu từ phương thức “<span class="lang:default decode:true  crayon-inline ">post()</span> ” truyền qua. Vì thế, ở đây tôi sẽ dùng PHP để demo cho các bạn.</p>
<p>Cách dùng của phương thức “<span class="lang:default decode:true  crayon-inline ">post()</span> ” sẽ giống với “<span class="lang:default decode:true  crayon-inline ">get()</span> ” nhưng khác về kĩ thuật truyền dữ liệu mà thôi.</p>
<pre class="lang:default decode:true">$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			$.post('vidu2.php', {
				emNguoiYeu: "Em Yêu Anh",
				anhNguoiYeu: "Anh không phải người dễ dãi nhé"
			},function(ketqua) {
				$('#noidung').html(ketqua);
			});
			
		});
	});</pre>
<p>Nội dung của file &#8220;<strong>vidu2.php</strong>&#8220;:</p>
<pre class="lang:default decode:true">&lt;?php 
echo '&lt;pre&gt;' .print_r($_POST,true). '&lt;/pre&gt;';</pre>
<p>Kết quả ví dụ trên sau khi thực thi:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post.png"><img loading="lazy" decoding="async" class=" size-full wp-image-154 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post.png" alt="Nhan du lieu tra ve tu post" width="385" height="247" srcset="https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post.png 385w, https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post-300x192.png 300w" sizes="auto, (max-width: 385px) 100vw, 385px" /></a></p>
<p>Ở ví dụ phương thức “<span class="lang:default decode:true  crayon-inline ">post()</span> ” này, ở đối số thứ 2 thay vì là Anonymous Function như ở ví dụ “<span class="lang:default decode:true  crayon-inline ">get()</span> ” mà chúng ta đã xem trước đó, thì đây là “<strong>một đối tượng</strong>” (Object) <strong>chứa những dữ liệu</strong> mà chúng ta cần truyền qua đường dẫn “<strong>vidu2.php</strong>” để nhận và trả về dữ liệu. <strong>Kết quả trả về</strong> sẽ được đưa vào <strong>đối số thứ 3</strong> cho chúng ta.</p>
<p>Như vậy chúng ta đã hoàn tất tìm hiểu xong “<span class="lang:default decode:true  crayon-inline ">get()</span> ” và “<span class="lang:default decode:true  crayon-inline ">post()</span> ” rồi. Quá dễ đúng không nào? Đến với phần tiếp theo chúng ta sẽ tìm hiểu đến phương thức “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” mạnh nhất trong thư viện jQuery. Nên đòi hỏi cách dùng nó cũng tương đối khó khăn hơn nhưng vẫn dễ rất nhiều hơn so Javascript thuần.</p>
<h3><strong>Phương thức “ajax()”</strong></h3>
<p>Cách sử dụng phương thức nãy vẫn giống cách gọi của các phương thức “<span class="lang:default decode:true  crayon-inline ">get()</span> ” và “<span class="lang:default decode:true  crayon-inline ">post()</span> ” nhưng chúng ta thay vì truyền đường dẫn trực tiếp vào phương thức thì phương thức “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” lại chấp nhận đối số đầu tiên chính là cấu hình cho kĩ thuật Ajax của chúng ta:</p>
<pre class="lang:default decode:true">	$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			$.ajax({
				url: 'vidu2.php',
				type: 'POST',
				dataType: 'html',
				data: {
					emNguoiYeu: "Em Yêu Anh",
					anhNguoiYeu: "Anh không phải người dễ dãi nhé"
				}
			}).done(function(ketqua) {
				$('#noidung').html(ketqua);
			});
			
		});
	});</pre>
<p>Các bạn thấy chứ? Rõ ràng đối số đầu tiên chúng ta truyền vào cho phương thức “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” chính là một đối tượng (Object) gồm các thuộc tính cấu hình để kĩ thuật AJAX của chúng ta có thể thực thi. Trong đó:</p>
<ol>
<li><span class="lang:default decode:true crayon-inline">url</span> : chuỗi chứa đường dẫn tới file cần lấy và trả về dữ liệu</li>
<li><span class="lang:default decode:true  crayon-inline ">type</span> : phương thức gửi đi tương tự như của “<span class="lang:default decode:true  crayon-inline ">&lt;form&gt;</span> ”, <strong>mặc định</strong> là “<strong>GET</strong>” nếu như các bạn không truyền vào.</li>
<li><span class="lang:default decode:true  crayon-inline ">dataType</span> : xác định dữ liệu trả về thuộc dạng nào? Nếu các bạn không truyền thì jQuery tự động nhận biết kiểu dữ liệu (script, html, json…). Tuy nhiên, tôi khuyến cáo các bạn nên truyền vào đầy đủ để nhận dữ liệu chính xác nhất. Và thông dụng nhất chính là “<strong>html</strong>”.</li>
<li><span class="lang:default decode:true  crayon-inline ">data</span> : truyền dữ liệu sang đường dẫn chỉ định để thực hiện xử lý và trả về dữ liệu. Tương tự như cách truyền dữ liệu của phương thức “<span class="lang:default decode:true  crayon-inline ">post()</span> ”.</li>
<li>“<span class="lang:default decode:true  crayon-inline ">done()</span> ” : ở loạt các bài viết hướng dẫn các bài viết về kĩ thuật Ajax với phương thức “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” trước đây trên Internet. Thay vì dùng “done()” chúng ta sẽ dùng thuộc tính “<strong>success</strong>” trong đối tượng truyền vào “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” nhưng từ các phiên bản mới hơn của jQuery. Họ khuyến cáo chúng ta nên sử dụng các phương thức như “<span class="lang:default decode:true  crayon-inline ">done()</span> , <span class="lang:default decode:true  crayon-inline ">fail()</span> , <span class="lang:default decode:true  crayon-inline ">always()</span> ” (Tương ứng: Hoàn thành, thất bại và luôn luôn thực hiện). Nên tùy vào nhu cầu mà bạn xài phương thức tương ứng. Và nên nhớ là đi kèm với phương thức “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” hoặc lưu vào một tên biến rồi dùng sau để nhận kết quả trả về.</li>
</ol>
<p>Kết quả thực thi ví dụ trên:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post.png"><img loading="lazy" decoding="async" class=" size-full wp-image-154 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post.png" alt="Nhan du lieu tra ve tu post" width="385" height="247" srcset="https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post.png 385w, https://thienanblog.com/wp-content/uploads/2015/06/5.-Nhan-du-lieu-tra-ve-tu-post-300x192.png 300w" sizes="auto, (max-width: 385px) 100vw, 385px" /></a></p>
<p>Hoàn toàn không khác ví dụ trước ở phương thức “<span class="lang:default decode:true  crayon-inline ">post()</span> ” đúng không nào? Và không chỉ có nhiêu đó, phương thức “<span class="lang:default decode:true  crayon-inline ">ajax()</span> ” còn hỗ trợ hàng tá các chức năng khác nhưng tôi không thể giới thiệu hết cho các bạn trong nội dung bài viết này được. Các bạn có thể xem thêm về tài liệu hướng dẫn của phương thức trên tại: <a href="http://api.jquery.com/category/ajax">http://api.jquery.com/category/ajax</a></p>
<p>Các bạn có thể tải toàn bộ <a href="https://thienanblog.com/wp-content/uploads/2015/06/jquery-ajax.rar">Sources Code của các ví dụ trên tại đây.</a></p>
<p>Trân trọng cám ơn độc giả đã xem qua bài viết này, mong được sự ủng hộ của các bạn ở các bài viết tới.</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/huong-dan-jquery-ajax-toan-tap/">Hướng dẫn jQuery Ajax toàn tập</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thienanblog.com/javascript/jquery/huong-dan-jquery-ajax-toan-tap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hướng dẫn sử dụng jQuery Lazy Load</title>
		<link>https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-lazy-load/</link>
					<comments>https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-lazy-load/#respond</comments>
		
		<dc:creator><![CDATA[Ân Vũ]]></dc:creator>
		<pubDate>Wed, 17 Jun 2015 17:07:14 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[cách sử dụng lazy loading image]]></category>
		<category><![CDATA[cuộn tải hình]]></category>
		<category><![CDATA[jQuery lazy load cách sử dụng]]></category>
		<category><![CDATA[jQuery scroll load hình ảnh]]></category>
		<category><![CDATA[lazy load image]]></category>
		<category><![CDATA[Lazy Load Plugin]]></category>
		<category><![CDATA[lazy loading là gì]]></category>
		<category><![CDATA[scroll load image]]></category>
		<category><![CDATA[tăng tốc website]]></category>
		<category><![CDATA[tăng tốc website với lazy load image]]></category>
		<guid isPermaLink="false">https://thienanblog.com/?p=134</guid>

					<description><![CDATA[<p>Chắc hẳn trong quá trình xây dựng Website, ít nhiều các bạn cũng từng nghĩ làm cách nào để có thể giảm tải bớt băng thông cho việc load hình&#8230;</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-lazy-load/">Hướng dẫn sử dụng jQuery Lazy Load</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Chắc hẳn trong quá trình xây dựng Website, ít nhiều các bạn cũng từng nghĩ làm cách nào để có thể giảm tải bớt băng thông cho việc load hình ảnh trên Website, nhất là những trang người dùng chỉ load vào xem nội dung rồi vội vàng ra đi. Như thế thì chúng ta vô tình lại tốn băng thông nhưng lại không giúp ích gì được cho chúng ta. Vậy làm sao để hạn chế điều này? Có cách nào có thể giúp người dùng cuộn trang tới đâu, hình ảnh load tới đó không? Câu trả lời là có và tôi sẽ giới thiệu với các bạn đến với <strong>jQuery Lazy Load Plugin</strong> để có thể thực hiện được việc này.</p>
<h2>Giới thiệu và cài đặt</h2>
<p>Tác giả: Mika Tuupola</p>
<p>Website: <a href="http://www.appelsiini.net/projects/lazyload">http://www.appelsiini.net/projects/lazyload</a></p>
<p>jQuery Lazy Load được xây dựng giúp người dùng cuộn tới đâu, load hình tới đó giúp cho việc giảm tải băng thông cho Website.</p>
<p>Để có thể cài đặt jQuery Lazy Load các bạn cần thực hiện các bước sau:</p>
<ol>
<li>Truy cập vào <a href="https://github.com/tuupola/jquery_lazyload">https://github.com/tuupola/jquery_lazyload</a> và nhấn vào nút “Download ZIP”.</li>
<li>Giải nén file vừa tải về, chúng ta sẽ được cấu trúc thư mục như sau:</li>
</ol>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/1.png"><img loading="lazy" decoding="async" class=" size-full wp-image-135 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/1.png" alt="Cấu trúc thư mục" width="224" height="218" /></a></p>
<ol start="3">
<li>Các bạn hãy vào folder “jquery_lazyload-master” và sau đó copy file “jquery.lazyload.min.js”.</li>
<li>Sau đó, các bạn hãy bỏ vào folder chứa website mà chúng ta xây dựng.</li>
<li>Tiến hành thêm thư viện vào trong website của chúng ta, nhưng các bạn cũng cần phải tải thư viện jQuery tại <a href="http://jquery.com">http://jquery.com</a> về trước nhé:</li>
</ol>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/2.png"><img loading="lazy" decoding="async" class=" size-full wp-image-136 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/2.png" alt="Chèn jQuery Lazy Load" width="493" height="34" srcset="https://thienanblog.com/wp-content/uploads/2015/06/2.png 493w, https://thienanblog.com/wp-content/uploads/2015/06/2-300x21.png 300w" sizes="auto, (max-width: 493px) 100vw, 493px" /></a></p>
<ol start="6">
<li>Cài đặt hoàn tất</li>
</ol>
<h2>Sử dụng</h2>
<p>Đầu tiên, để sử dụng thư viện này, các bạn hãy chuẩn bị cho tôi 1,2 hoặc nhiều tấm hình trở lên. Cụ thể ở đây tôi sẽ có tấm hình “demo.gif”:</p>
<p>Tiếp theo, chúng ta sẽ load tấm hình đó vào HTML và hãy nhân bản lên thành nhiều tấm để tiện cho việc chúng ta tập cách sử dụng:</p>
<pre class="lang:default decode:true ">	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;</pre>
<p>Ở đoạn code trên, nếu các bạn để ý thì thay vì chúng ta dùng thẻ “<strong>&lt;img&gt;</strong>” và có thuộc tính “<strong>src</strong>” để chỉ rõ đường dẫn của tấm hình thì nay nó đã được thay thế bằng “<strong>data-original</strong>” và cách gán đường dẫn <strong>giống với thuộc tính</strong> “<strong>src</strong>”:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/4.png"><img loading="lazy" decoding="async" class=" size-full wp-image-138 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/4.png" alt="4" width="424" height="31" srcset="https://thienanblog.com/wp-content/uploads/2015/06/4.png 424w, https://thienanblog.com/wp-content/uploads/2015/06/4-300x22.png 300w" sizes="auto, (max-width: 424px) 100vw, 424px" /></a></p>
<p>Các bạn cũng nên định nghĩa một tên class để tiện cho việc tìm đến những tấm ảnh này thông qua jQuery. Sau đó, các bạn hãy dùng thẻ “<strong>&lt;script&gt;</strong>” để tiến hành sử dụng thư viện jQuery Lazy Load:</p>
<pre class="lang:default decode:true ">	&lt;script type="text/javascript"&gt;
		$(function() {
		    $("img.ten-lop-ban-tu-dat").lazyload({
		    	effect : "fadeIn"
		    });
		});
	&lt;/script&gt;</pre>
<p>Sau khi thực hiện đoạn code này, chúng ta đã thành công trong việc sử dụng thư viện rồi đấy. Thông qua việc sử dụng phương thức “<strong>lazyload()</strong>” ở thẻ “<strong>&lt;img&gt;</strong>” mà bạn chỉ định. Và đối số trong phương thức “<strong>lazyload()</strong>” chính là <strong>một đối tượng</strong> <strong>chứa các tính năng</strong> mà bạn có thể tùy biến theo hướng dẫn của tác giả Plugin jQuery Lazy Load.</p>
<p>Và đoạn code đầy đủ của nó sẽ như sau:</p>
<pre class="lang:default decode:true ">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;Test&lt;/title&gt;	
	&lt;style type="text/css"&gt;
	img {
		float:left;
		width: 500px;
		height: 500px;
	}
	&lt;/style&gt;
	&lt;script type="text/javascript" src="jquery-1.11.3.min.js"&gt;&lt;/script&gt;	
	&lt;script type="text/javascript" src="jquery.lazyload.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;img src="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;
	&lt;img data-original="demo.gif" class="ten-lop-ban-tu-dat" /&gt;	
	&lt;script type="text/javascript"&gt;
		$(function() {
		    $("img.ten-lop-ban-tu-dat").lazyload({
		    	effect : "fadeIn"
		    });
		});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h2>Một số tính năng có thể sử dụng trong jQuery Lazy Load</h2>
<table>
<tbody>
<tr>
<td width="186">threshold</td>
<td width="414">Load trước số pixel chỉ định</td>
</tr>
<tr>
<td width="186">event</td>
<td width="414">Thực hiện load hình ảnh khi sự kiện chỉ định được gọi</td>
</tr>
<tr>
<td width="186">effect</td>
<td width="414">Hiệu ứng load hình ảnh</td>
</tr>
<tr>
<td width="186">skip_invisible</td>
<td width="414">Bỏ qua các hình ảnh không được hiển thị trong viewport</td>
</tr>
<tr>
<td width="186">failure_limit</td>
<td width="414">Chạy vòng lặp kiểm tra hình ảnh load bị lỗi với số lần quy định</td>
</tr>
</tbody>
</table>
<p>Demo cách sử dụng gộp các tính năng:</p>
<pre class="lang:default decode:true ">	&lt;script type="text/javascript"&gt;
		$(function() {
		    $("img.ten-lop-ban-tu-dat").lazyload({
		    	effect : "fadeIn",
		    	threshold: 100,
		    	event : "mouseover"
		    });
		});
	&lt;/script&gt;</pre>
<p>Trên đây chỉ thống kê ngắn gọn các tính năng của jQuery Lazy Load, chắc chắn vẫn chưa đầy đủ ở Website của tác giả, mong bạn đọc thông cảm. Bạn có thể tải file <a href="https://thienanblog.com/wp-content/uploads/2015/06/demo-jquery-lazy-load.rar">demo-jquery-lazy-load</a> tại đây.</p>
<p>&nbsp;</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-lazy-load/">Hướng dẫn sử dụng jQuery Lazy Load</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-lazy-load/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hướng dẫn sử dụng jQuery Validation</title>
		<link>https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-validation/</link>
					<comments>https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-validation/#respond</comments>
		
		<dc:creator><![CDATA[Ân Vũ]]></dc:creator>
		<pubDate>Thu, 11 Jun 2015 12:10:25 +0000</pubDate>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[cách sử dụng jquery validate]]></category>
		<category><![CDATA[cách sử dụng jquery validation]]></category>
		<category><![CDATA[jquery validate cách sử dụng]]></category>
		<category><![CDATA[jquery validate là gì]]></category>
		<category><![CDATA[jquery validation là gì]]></category>
		<category><![CDATA[jquery validation plugin]]></category>
		<category><![CDATA[kiểm soát thông tin form]]></category>
		<category><![CDATA[kiểm tra form]]></category>
		<category><![CDATA[plugin validate jquery]]></category>
		<category><![CDATA[thư viện validate jquery]]></category>
		<category><![CDATA[thư viện validation jquery]]></category>
		<category><![CDATA[validate bằng jquery]]></category>
		<category><![CDATA[xác thực thông tin từ form]]></category>
		<category><![CDATA[xử lý form jquery]]></category>
		<guid isPermaLink="false">https://thienanblog.com/?p=116</guid>

					<description><![CDATA[<p>I. Giới thiệu và Cài đặt Tác giả: Jörn Zaefferer Website: http://jqueryvalidation.org jQuery Validation được xây dựng giúp các lập trình viên có thể xác thực được những thông tin người&#8230;</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-validation/">Hướng dẫn sử dụng jQuery Validation</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>I. Giới thiệu và Cài đặt</h2>
<p>Tác giả: Jörn Zaefferer</p>
<p>Website: <a href="http://jqueryvalidation.org">http://jqueryvalidation.org</a></p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/logo.png"><img loading="lazy" decoding="async" class=" size-full wp-image-117 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/logo.png" alt="logo" width="546" height="130" srcset="https://thienanblog.com/wp-content/uploads/2015/06/logo.png 546w, https://thienanblog.com/wp-content/uploads/2015/06/logo-300x71.png 300w" sizes="auto, (max-width: 546px) 100vw, 546px" /></a></p>
<p><strong>jQuery Validation được xây dựng giúp các lập trình viên có thể xác thực được những thông tin người dùng nhập vào Form một cách nhanh chóng và dễ dàng.</strong></p>
<p><strong>Để có thể cài đặt jQuery Validate các bạn cần thực hiện các bước sau:</strong></p>
<ol>
<li>Truy cập vào <a href="https://github.com/jzaefferer/jquery-validation">https://github.com/jzaefferer/jquery-validation</a> và nhấn vào nút “Download ZIP”.</li>
<li>Giải nén file vừa tải về, chúng ta sẽ được cấu trúc thư mục như sau:</li>
</ol>
<p><img loading="lazy" decoding="async" class=" size-full wp-image-119 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/1.-Cau-truc-folder.png" alt="1. Cau truc folder" width="132" height="187" /></p>
<ol start="3">
<li>Các bạn hãy vào folder “dist” và sau đó copy file “jquery.validate.min.js”.</li>
<li>Sau đó, các bạn hãy bỏ vào folder chứa website mà chúng ta xây dựng.</li>
<li>Tiến hành thêm thư viện vào trong website của chúng ta, nhưng các bạn cũng cần phải tải thư viện jQuery tại <a href="http://jquery.com">http://jquery.com</a> về trước nhé:</li>
</ol>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-120 size-full" src="https://thienanblog.com/wp-content/uploads/2015/06/2.-Them-thu-vien-vao-HTML.png" alt="Thêm thư viện vào HTML" width="515" height="49" srcset="https://thienanblog.com/wp-content/uploads/2015/06/2.-Them-thu-vien-vao-HTML.png 515w, https://thienanblog.com/wp-content/uploads/2015/06/2.-Them-thu-vien-vao-HTML-300x29.png 300w" sizes="auto, (max-width: 515px) 100vw, 515px" /></p>
<ol start="6">
<li>(Tùy chọn) Nếu như các bạn không thích tải về thư viện jQuery Validation hoặc kể cả jQuery, các bạn có thể dùng các đường link CDN sau đây:</li>
</ol>
<pre class="lang:default decode:true">&lt;script src="//code.jquery.com/jquery-1.11.3.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js"&gt;&lt;/script&gt;</pre>
<ol start="7">
<li>Cài đặt hoàn tất.</li>
</ol>
<h2>II. Sử dụng</h2>
<p>Để sử dụng jQuery Validation các bạn cần phải biết qua phương thức “$(‘#id_cua_form’).validate()” (Nếu dùng class thì các bạn hãy tự thay thế). Chúng ta sẽ có cấu trúc HTML đơn giản như sau:</p>
<pre class="lang:default decode:true ">&lt;form method="get" accept-charset="utf-8" style="width:600px;margin: 0px auto;" id="formDemo"&gt;
		&lt;fieldset&gt;
			&lt;legend&gt;Demo jQuery Validation - ThienAnBlog.com&lt;/legend&gt;
			&lt;div&gt;
				&lt;label&gt;Họ&lt;/label&gt;
				&lt;input name="ho" type="text" placeholder="Vui lòng nhập họ" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Tên&lt;/label&gt;
				&lt;input name="ten" type="text" placeholder="Vui lòng nhập tên" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Địa chỉ&lt;/label&gt;
				&lt;input name="diachi" type="text" placeholder="Vui lòng nhập địa chỉ" required&gt;
			&lt;/div&gt;
			&lt;button type="submit"&gt;Gửi&lt;/button&gt;
		&lt;/fieldset&gt;
	&lt;/form&gt;</pre>
<p>Và cấu trúc thẻ &lt;script&gt;:</p>
<pre class="lang:default decode:true">$(document).ready(function() {

		//Khi bàn phím được nhấn và thả ra thì sẽ chạy phương thức này
		$("#formDemo").validate({
			rules: {
				ho: "required",
				ten: "required",
				diachi: {
					required: true,
					minlength: 2
				}
			},
			messages: {
				ho: "Vui lòng nhập họ",
				ten: "Vui lòng nhập tên",
				diachi: {
					required: "Vui lòng nhập địa chỉ",
					minlength: "Địa chỉ ngắn vậy, chém gió ah?"
				}
			}
		});
	});</pre>
<p>Khi chạy nó, các bạn sẽ thấy thư viện của chúng ta sẽ thực hiện “Xác thực” (Validate) khi chúng ta nhấn vào nút “Submit” thì ở đây nó chính là nút “Gửi”. Hoặc các bạn có thể gõ vài dòng chữ vào và nhận ra sự khác biệt khi xóa đi. Đó chính là những đoạn thông báo nhỏ như sau:</p>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/3.-Form-Validate-Simple.png"><img loading="lazy" decoding="async" class=" size-full wp-image-121 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/3.-Form-Validate-Simple.png" alt="Form Validate - Simple" width="607" height="126" srcset="https://thienanblog.com/wp-content/uploads/2015/06/3.-Form-Validate-Simple.png 607w, https://thienanblog.com/wp-content/uploads/2015/06/3.-Form-Validate-Simple-300x62.png 300w" sizes="auto, (max-width: 607px) 100vw, 607px" /></a></p>
<p>Rất là đẹp mắt phải không các bạn? Nhưng thật ra để được vậy thì các bạn phải có CSS vào nữa đấy chứ thật ra Form này khi không có CSS thì các bạn sẽ thấy nó chạy lung tung.</p>
<p>Tôi sẽ giải thích một tí về đoạn script mà chúng ta viết:</p>
<ol>
<li>Phương thức &#8220;<strong>validate()</strong>&#8221; chấp nhận 1 đối số là <strong>một đối tượng</strong> có <strong>2 thuộc tính</strong> chính là “<strong>rules</strong>” và “<strong>messages</strong>”.</li>
<li>Trong đó, “<strong>rules</strong>” đại diện cho điều kiện xác thực như “<strong>required</strong>”(Không bỏ trống), “<strong>minlength</strong>”(Độ dài tối thiểu)…và “<strong>messages</strong>” đại diện cho các thông báo lỗi mà chúng ta đã thấy ở ví dụ trên.</li>
<li>Và thuộc tính “<strong>rules</strong>” của chúng ta sẽ lại bao gồm các phần tử con cũng là <strong>một đối tượng</strong> với các thuộc tính bên trong nó chính là thuộc tính “<strong>name</strong>” bên trong các thẻ “<strong>input</strong>” của chúng ta. Các bạn có thể xem qua hình ảnh sau:</li>
</ol>
<p><a href="https://thienanblog.com/wp-content/uploads/2015/06/4.-So-sanh-HTML-va-Code.png"><img loading="lazy" decoding="async" class=" size-full wp-image-128 aligncenter" src="https://thienanblog.com/wp-content/uploads/2015/06/4.-So-sanh-HTML-va-Code.png" alt="So sanh HTML va Code" width="594" height="286" srcset="https://thienanblog.com/wp-content/uploads/2015/06/4.-So-sanh-HTML-va-Code.png 594w, https://thienanblog.com/wp-content/uploads/2015/06/4.-So-sanh-HTML-va-Code-300x144.png 300w" sizes="auto, (max-width: 594px) 100vw, 594px" /></a></p>
<ol start="4">
<li>Rất đơn giản phải không nào? “<strong>messages</strong>” cũng sẽ <strong>tương tự</strong> “<strong>rules</strong>” và nếu bạn tinh ý sẽ nhận ra là kể cả điều kiện bên trong nó như “<strong>required</strong>”, “<strong>minlength</strong>” cũng sẽ tương đồng với bên “<strong>messages</strong>”. Hai cái chỉ khác nhau về công việc mà thôi.</li>
<li>Như vậy, chúng ta đã hoàn tất được công việc “Validate” rồi đấy.</li>
</ol>
<p>Chúng ta sẽ có cấu trúc hoàn chỉnh như sau:</p>
<pre class="lang:default decode:true">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;jQuery Validation - ThienAnBlog.com&lt;/title&gt;	
	&lt;style type="text/css"&gt;
	label {
		display: inline-block;
		width: 150px;
	}
	input[type="text"], input[type="password"] {
		display: inline-block;
		width: 200px;
	}
	label.error {
		display: inline-block;
		color:red;
		width: 200px;
	}
	&lt;/style&gt;
	&lt;!-- Load Thư viện jQuery vào trước khi load jQuery Validate--&gt;
	&lt;script src="//code.jquery.com/jquery-1.11.3.min.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;form method="get" accept-charset="utf-8" style="width:600px;margin: 0px auto;" id="formDemo"&gt;
		&lt;fieldset&gt;
			&lt;legend&gt;Demo jQuery Validate - ThienAnBlog.com&lt;/legend&gt;
			&lt;div&gt;
				&lt;label&gt;Họ&lt;/label&gt;
				&lt;input name="ho" type="text" placeholder="Vui lòng nhập họ" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Tên&lt;/label&gt;
				&lt;input name="ten" type="text" placeholder="Vui lòng nhập tên" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Địa chỉ&lt;/label&gt;
				&lt;input name="diachi" type="text" placeholder="Vui lòng nhập địa chỉ" required&gt;
			&lt;/div&gt;
			&lt;button type="submit"&gt;Gửi&lt;/button&gt;
		&lt;/fieldset&gt;
	&lt;/form&gt;
	&lt;script type="text/javascript"&gt;

	$(document).ready(function() {

		//Khi bàn phím được nhấn và thả ra thì sẽ chạy phương thức này
		$("#formDemo").validate({
			rules: {
				ho: "required",
				ten: "required",
				diachi: {
					required: true,
					minlength: 2
				}
			},
			messages: {
				ho: "Vui lòng nhập họ",
				ten: "Vui lòng nhập tên",
				diachi: {
					required: "Vui lòng nhập địa chỉ",
					minlength: "Địa chỉ ngắn vậy, chém gió ah?"
				}
			}
		});
	});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Ngoài ra, tôi sẽ gửi thêm cho các bạn một file demo khác để giúp các bạn hình dung rõ ràng hơn như sau:</p>
<pre class="lang:default decode:true">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
	&lt;title&gt;jQuery Validate - ThienAnBlog.com&lt;/title&gt;	
	&lt;style type="text/css"&gt;
	label {
		display: inline-block;
		width: 150px;
	}
	input[type="text"], input[type="password"] {
		display: inline-block;
		width: 200px;
	}
	label.error {
		display: inline-block;
		color:red;
		width: 200px;
	}
	&lt;/style&gt;
	&lt;!-- Load Thư viện jQuery vào trước khi load jQuery Validate--&gt;
	&lt;script src="//code.jquery.com/jquery-1.11.3.min.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;form method="get" accept-charset="utf-8" style="width:600px;margin: 0px auto;" id="formDemo"&gt;
		&lt;fieldset&gt;
			&lt;legend&gt;Demo jQuery Validate - ThienAnBlog.com&lt;/legend&gt;
			&lt;div&gt;
				&lt;label&gt;Họ&lt;/label&gt;
				&lt;input name="ho" type="text" placeholder="Vui lòng nhập họ" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Tên&lt;/label&gt;
				&lt;input name="ten" type="text" placeholder="Vui lòng nhập tên" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Địa chỉ&lt;/label&gt;
				&lt;input name="diachi" type="text" placeholder="Vui lòng nhập địa chỉ" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Số điện thoại&lt;/label&gt;
				&lt;input name="sodienthoai" type="text" placeholder="Vui lòng nhập số điện thoại" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Email&lt;/label&gt;
				&lt;input name="email" type="text" placeholder="Vui lòng nhập Email" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Mật khẩu&lt;/label&gt;
				&lt;input id="password" name="password" type="password" placeholder="Vui lòng nhập Password" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Nhập lại mật khẩu&lt;/label&gt;
				&lt;input name="confirm_password" type="password" placeholder="Vui lòng nhập lại Password" required&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Điều khoản&lt;/label&gt;
				&lt;input name="dieukhoan" type="checkbox"&gt;
			&lt;/div&gt;
			&lt;div&gt;
				&lt;label&gt;Thông tin thêm&lt;/label&gt;
				&lt;input name="thongtinthem" type="text" placeholder="Tùy chọn..."&gt;
			&lt;/div&gt;
			&lt;button type="submit"&gt;Gửi&lt;/button&gt;
		&lt;/fieldset&gt;
	&lt;/form&gt;
	&lt;script type="text/javascript"&gt;

	$(document).ready(function() {

		//Khi bàn phím được nhấn và thả ra thì sẽ chạy phương thức này
		$("#formDemo").validate({
					rules: {
						ho: "required",
						ten: "required",
						diachi: {
							required: true,
							minlength: 2
						},
						sodienthoai: {
							required: true,
							minlength: 5
						},
						password: {
							required: true,
							minlength: 5
						},
						confirm_password: {
							required: true,
							minlength: 5,
							equalTo: "#password"
						},
						email: {
							required: true,
							email: true
						},
						dieukhoan: "required"
					},
					messages: {
						ho: "Vui lòng nhập họ",
						ten: "Vui lòng nhập tên",
						diachi: {
							required: "Vui lòng nhập địa chỉ",
							minlength: "Địa chỉ ngắn vậy, chém gió ah?"
						},
						sodienthoai: {
							required: "Vui lòng nhập số điện thoại",
							minlength: "Số máy quý khách vừa nhập là số không có thực"
						},
						password: {
							required: 'Vui lòng nhập mật khẩu',
							minlength: 'Vui lòng nhập ít nhất 5 kí tự'
						},
						confirm_password: {
							required: 'Vui lòng nhập mật khẩu',
							minlength: 'Vui lòng nhập ít nhất 5 kí tự',
							equalTo: 'Mật khẩu không trùng'
						},
						email: {
							required: "Please provide a password",
							minlength: "Your password must be at least 5 characters long",
							equalTo: "Please enter the same password as above"
						},
						email: "Vui lòng nhập Email",
						agree: "Vui lòng đồng ý các điều khoản"
					}
				});
	});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Các bạn có thể tải các <a href="https://thienanblog.com/wp-content/uploads/2015/06/demo.zip">Demo trên tại đây</a>.</p>
<h2>Một số điều kiện bên trong jQuery Validation</h2>
<table>
<tbody>
<tr>
<td width="312">required</td>
<td width="312">Không được bỏ trống</td>
</tr>
<tr>
<td width="312">remote</td>
<td width="312">Gửi yêu cầu về Web Server để xác thực</td>
</tr>
<tr>
<td width="312">minlength</td>
<td width="312">Độ dài tối thiểu</td>
</tr>
<tr>
<td width="312">maxlength</td>
<td width="312">Độ dài tối đa</td>
</tr>
<tr>
<td width="312">rangelength</td>
<td width="312">Độ dài tối thiểu từ x tới y</td>
</tr>
<tr>
<td width="312">min</td>
<td width="312">Số tối thiểu</td>
</tr>
<tr>
<td width="312">max</td>
<td width="312">Số tối đa</td>
</tr>
<tr>
<td width="312">range</td>
<td width="312">Số tối thiểu từ x tới y</td>
</tr>
<tr>
<td width="312">email</td>
<td width="312">Xác thực định dạng Email</td>
</tr>
<tr>
<td width="312">url</td>
<td width="312">Xác thực định dạng URL</td>
</tr>
<tr>
<td width="312">date</td>
<td width="312">Xác thực định dạng ngày tháng</td>
</tr>
<tr>
<td width="312">dateISO</td>
<td width="312">Xác thực định dạng ngày tháng theo chuẩn ISO</td>
</tr>
<tr>
<td width="312">number</td>
<td width="312">Phải là số, bao gồm số thập phân</td>
</tr>
<tr>
<td width="312">digits</td>
<td width="312">Chỉ chấp nhận số nguyên dương</td>
</tr>
<tr>
<td width="312">creditcard</td>
<td width="312">Xác thực số thẻ tín dụng</td>
</tr>
<tr>
<td width="312">equalTo</td>
<td width="312">Phải trùng với phần tử nào đó</td>
</tr>
</tbody>
</table>
<p>Ngoài ra, các bạn có thể tham khảo tại đây <a href="http://jqueryvalidation.org/documentation">http://jqueryvalidation.org/documentation</a> để có thể tìm hiểu thêm về thư viện này.</p>
<p>The post <a href="https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-validation/">Hướng dẫn sử dụng jQuery Validation</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thienanblog.com/javascript/jquery/huong-dan-su-dung-jquery-validation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
