อ่านกันหรือยัง
วันนี้ผมจะมานำเสนอ การใช้งาน jQuery Autocomplete Plugin ลองคลิก Live Demo ดูครับ คุณสมบัติของปลั๊กอินตัวนี้ มากมายนัก แต่ผมจะนำเสนอ แบบที่ใช้งานง่ายที่สุด ให้ท่าน ถ้าเกิดว่าท่าน อยากจะใช้งานมันแบบสุดๆ ปรับแต่งมันแบบสุดๆ ก็คงต้องขอให้ท่านศึกษาจากเว็บไซต์ ต้นฉบับเขา ราตรียาวนานฝันยุ่งเหยิง เริ่มต้นกันเลยดีกว่า
เริ่มต้นที่ดาวน์โหลดตัวปลั๊กอินมาก่อน Download
หลังจากดาวน์โหลดมาแล้วและแตกซิปออก ในนั้นจะมีตัวอย่างการใช้งานอยู่ ท่านสามารถศึกษาจากตัวอย่าง ได้อีกทางหนึ่ง
เขียนโค้ดแรก โดยการ include ไฟล์ที่จำเป็นเข้ามา
<script type="text/javascript" src="jquery-autocomplete/lib/jquery.js"></script> <script type="text/javascript" src="jquery-autocomplete/jquery.autocomplete.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.bgiframe.min.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.ajaxQueue.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/thickbox-compressed.js"></script> <link rel="stylesheet" href="jquery-autocomplete/lib/thickbox.css" /> <link rel="stylesheet" href="jquery-autocomplete/jquery.autocomplete.css" /> |
สร้าง textbox สำหรับใช้งาน
<input name="month" id="month" type="text" /> |
สร้าง Autocomplete ให้กับ textbox
<script type="text/javascript"> $(document).ready(function(){ var str_month = "มกราคม กุมภาพันธ์ มีนาคม เมษายน พฤษภาคม มิถุนายน กรกฎาคม สิงหาคม กันยายน ตุลาคม พฤศจิกายน ธันวาคม"; var arr_month = str_month.split(" "); $("#month").autocomplete( arr_month ); }) </script> |
แค่เราส่ง array เป็นพารามิเตอร์เข้าไป เท่านี้ก็เรียบร้อย ส่วน array ท่านจะสร้างด้วยวิธีใด ก็สุดแล้วแต่ละครับ
$("#month").autocomplete( arr_month ); |
โค้ดทั้งหมด
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.js"></script> <script type="text/javascript" src="jquery-autocomplete/jquery.autocomplete.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.bgiframe.min.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.ajaxQueue.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/thickbox-compressed.js"></script> <link rel="stylesheet" href="jquery-autocomplete/lib/thickbox.css" /> <link rel="stylesheet" href="jquery-autocomplete/jquery.autocomplete.css" /> <title>Autocomplete jQuery Plugin</title> <script type="text/javascript"> $(document).ready(function(){ var str_month = "มกราคม กุมภาพันธ์ มีนาคม เมษายน พฤษภาคม มิถุนายน กรกฎาคม สิงหาคม กันยายน ตุลาคม พฤศจิกายน ธันวาคม"; var arr_month = str_month.split(" "); $("#month").autocomplete( arr_month ); }) </script> </head> <body> <input name="month" id="month" type="text" /> </body> </html> |
เพียงเท่านี้เองครับ เห็นมั้ยครับ ว่าวิธีการใช้งานนั้น ง่ายแสนง่าย
โค้ดด้านล่าง จะแสดงวิธีการใช้งานแบบ Advance ขึ้นมานึดนึง
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.js"></script> <script type="text/javascript" src="jquery-autocomplete/jquery.autocomplete.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.bgiframe.min.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/jquery.ajaxQueue.js"></script> <script type="text/javascript" src="jquery-autocomplete/lib/thickbox-compressed.js"></script> <link rel="stylesheet" href="jquery-autocomplete/lib/thickbox.css" /> <link rel="stylesheet" href="jquery-autocomplete/jquery.autocomplete.css" /> <title>Autocomplete jQuery Plugin</title> <script type="text/javascript"> $(document).ready(function(){ var str_month = "มกราคม กุมภาพันธ์ มีนาคม เมษายน พฤษภาคม มิถุนายน กรกฎาคม สิงหาคม กันยายน ตุลาคม พฤศจิกายน ธันวาคม"; var arr_month = str_month.split(" "); $("#month").autocomplete( arr_month , { multiple: true, //ยอมให้ป้อนได้หลายค่า mustMatch: true, //ป้อนได้เฉพาะค่าที่เตรียมไว้ให้ autoFill: true, //เติมคำอัตโนมัติ matchContains: true //หาค่าที่ไม่ใช่ตัวเริ่มต้น }); }) </script> </head> <body> <input name="month" id="month" type="text" /> </body> </html> |
ดาวน์โหลดโค้ดตัวอย่าง : Download
ข้อมูลเพิ่มเติม : http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
minddezign says:
23/07/2552 at 23/07/2552
แล้วหากผมมีข้อมูลอยู่ในอยู่ใน table ใน mysql แล้วผม query data เข้ามาใส่แทนใน JavaScript ได้อย่างงัยอ่ะครับเช่นผมมีเดือนต่างๆเก็บไว้ที่ database อ่ะครับ
พอดีผมเองไม่ค่อยได้ใช้ Javascript + php อ่ะครับ แต่จะลองทำก่อนไม่รู้ว่าจะได้เป่า หากได้เดียวจะเอามาให้ตรวจดูครับ JavaScript ยังงูๆปลาๆเลยอ่ะครับ
แต่หากพี่ทำได้ รบกวนช่วยยกตัวอย่างด้วยครับ ขอบคุณครับผม
administrator says:
23/07/2552 at 23/07/2552
ใช้คำสั่ง echo ธรรมดาเลย
var str_month = ““;
แทรกโครมเข้าไปเลยตรงนี้ วนลูปดึงเอาเดือนจากดาต้าเบส echo ลงมาเลย คำมันก็จะเรียง ตามแบบที่ต้องการ พอมาถึงฝั่ง javascript มันก็ทำของมันเอง
ผมขออธิบาย php กับ javascript นิดนึงนะ
php ทำงานบนเซิฟเวอร์ ตอนมันทำงานจาวาสคริปต์ยังไม่ถึงคิวจะทำ ถ้าเรา echo แท็ก html ออกมา มันก็เป็น html echo javascript ออกมา มันก็เป็นจาวาสคริปต์
ส่วน javascript ทำงานฝั่งไคลเอนท์ ถ้ามันเห็นข้อความ ที่ขึ้นต้นด้วย <script> เมื่อไร มันจะเข้าใจทันทีว่า นั่นคำสั่งของตัวมัน
เพราะฉะนั้นการเขียนปนกัน เราก็แค่จินตนาการถึง จาวาสคริปต์ รูปสำเร็จ แล้วเราก็ให้ php ช่วย echo ค่าตามนั้น ง่ายๆ
minddezign says:
24/07/2552 at 24/07/2552
ขอบคุณครับ เดียวลองดู่ก่อนครับ
minddezign says:
24/07/2552 at 24/07/2552
ลองทำแหล่ะครับได้แหล่ะ แต่มันยากที่ผมใช้ javascript ไปเรียกการใช้งานของ php ได้อย่างงัย แต่ก็ลองถูๆไถๆดู ก็ได้ครับแต่ไม่รู้ว่าจะถูกหลักการไหม
** แต่อยากรู้ว่าจะให้ javascript ไปเรียก php ที่เรา้เขียนไว้ได้อย่างงัยครับ
อันนี้โค๊ดที่ผมทำก็ออกน่ะครับ ใช้ได้ปกติ
==================================================
db_connect(DB_SERVER_HOST, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_SERVER_DATABASE);
# Mode SQL Command : Select for count data in condition
$sql = ” SELECT “;
$sql .= ” id, “;
$sql .= ” name “;
$sql .= ” FROM “;
$sql .= TABLE_MONTH;
# Execute query command
$res[‘select_data’] = $conn_mysql->query($sql);
# Set variable type array
$arr[‘data_detail’] = array();
$arr_month = array();
# Loop data in to variable : Fetch a result row as an associative array
while ($arr[‘data_detail’] = $conn_mysql->fetch_row($res[‘select_data’])) {
# Define variable for use easy
$id = $arr[‘data_detail’][‘id’];
$name = $arr[‘data_detail’][‘name’];
# Push one or more elements onto the end of array : เพิ่มค่าเข้าไปใน Array มันก็จะวนต่อกันไปเรื่อยๆ
array_push($arr_month, $name);
} // end while
# Close the database
$conn_mysql->db_close();
/*
echo “
“;
*/
?>
<?php
# นับจำนวนค่าทั้งหมดที่อยู่ใน array
$count_array = count($arr_month);
//echo "มีจำนวนทั้งหมด : " . $count_array;
//echo "”;
# กำหนดค่าเริ่มต้น
$seq = 0;
# วนลูปแสดงค่าที่อยู่ใน array ออกมา
foreach ($arr_month as $key=>$val) {
# เพิ่มค่าที่ละ 1
$seq++;
# แสดงค่าออกมา
echo $val;
# ตรวจสอบ : หากไม่ใช่ตัวสุดท้ายก็ให้แสดง “,” ต่อท้าย แต่หากเป็นตัวสุดท้ายไม่ต้องแสดง “,”
if ($seq != $count_array) {
echo “,”;
} // end if
} // end foreach
?>
Autocomplete jQuery Plugin
$(document).ready(function(){
// ตรงนี้ไป copy code php ที่เขียนไว้ข้างบนเอามาใส่ใน JavaScript แต่อยากรู้ว่าจะให้ JavaScript ไปเรียกใช้งาน php ที่เขียนไว้ได้อย่างงัย
var str_month = ‘$val) {$seq++;echo $val; if ($seq != $count_array) {echo ‘,’;}}?>’;
var arr_month = str_month.split(“,”);
$(“#month”).autocomplete( arr_month );
})
จงพิมพ์ ก ไก่ หรือชื่อเดือนไทย
=================================================
ลองทำแบบมั่วๆเอา 555
minddezign says:
24/07/2552 at 24/07/2552
อีกเรื่องครับ
หากผมจะให้มัน ค้นหา(Search) มากกว่าที่จะค้นหาคำแรกของเดือน คือผมต้องการค้นหาคำว่า “คม” ก็จะแสดงคำเดือนทั้งหมดที่มี คม ออกมาน่ะครับ ทำอย่างไรครับ
minddezign says:
24/07/2552 at 24/07/2552
ผมจะให้มันค้นหาคำว่า คม แทนทีจะให้มันหาคำแรกทำอย่างไรดีครับ
administrator says:
24/07/2552 at 24/07/2552
ปรับปรุงโค้ดให้ ของเ่ด่นมันเยิ่นเย้อ และไม่จำเป็นต้องวนลูป แล้วเช็กว่าเป็นตัวท้ายหรือเปล่า แค่ใช้คำสั่ง implode ก็พอ
จะได้สตริงที่มี , คั่นโดยไม่ต้องวนลูปอะไรเลย จาก 9 บรรทัด เหลือบรรทัด เดียว แล้วตอนเขียนแทรกลงใน จาวาสคริปต์ ก็แทรกอย่างนี้ครับ
var str_month = ““;
var arr_month = str_month.split(“,”);
administrator says:
24/07/2552 at 24/07/2552
ส่วนที่ถามว่าอยากจะให้มันค้นหาคำว่า คมแทนที่ จะหาจากตัวแรก ทำได้ครับผม ลองดูตัวอย่าง
http://jquery.bassistance.de/autocomplete/demo/
ลองพิมพ์ ch ในช่อง Single Bird (remote): จะเห็นว่ามันทำได้อย่างที่เด่นต้องการ
ส่วนทำอย่างไรนั้น เอ่อ… คงต้องศึกษาเพิ่มเติมจากเว็บเขานั่นแหละครับ ผมเองก็ใช้มันแค่ง่ายๆ เลยไม่ได้ศึกษาอย่างที่เด่นต้องการ
minddezign says:
25/07/2552 at 25/07/2552
ขอบคุณครับ ผมรู้แหล่ะครับว่าจะ Search อย่างไรครับ หาตั้งนานแน่ะครับ แจ๋วๆจริงๆครับผม ผมอยากจะเรียนรู้พวก Java เพิ่มเติมมั่ง อยากเขียนพวก Ajax + JavaScript ตอนนี้เรียน Java แบบเล็กๆอยู่ครับผม
ขอบคุณครับสำหรับความรู้ดีๆครับ
mrsitti says:
12/09/2552 at 12/09/2552
ขอบคุณทั้งท่านผู้ถาม และท่านผู้ตอบที่แสนใจดี
เป็นกำลังใจให้นะครับ
xxx says:
09/10/2552 at 09/10/2552
ผมจะให้มันค้นหาคำว่า คม แทนทีจะให้มันหาคำแรกทำอย่างไรดีครับ
$(“#month”).autocomplete( arr_month , {
multiple: true, //ยอมให้ป้อนได้หลายค่า
mustMatch: true, //ป้อนได้เฉพาะค่าที่เตรียมไว้ให้
autoFill: true, //เติมคำอัตโนมัติ
matchContains: true //หาค่าที่ไม่ใช่ตัวเริ่มต้น
});
music says:
04/11/2552 at 04/11/2552
ผมลองแล้วอ่ะครับ ถ้าใช้แบบ multiple มันจะไม่ support ie 8 ดูจาก demo ก็ไม่ดี งงมากคับ http://jquery.bassistance.de/autocomplete/demo/
ผ่านมา says:
10/12/2552 at 10/12/2552
แจ่มครับ
bank says:
07/02/2553 at 07/02/2553
ถ้ามีข้อมูลเยอะๆแล้วต้องการให้มีิตัวเลื่อนขึ้นเลื่อนลงเหมือนรูปตัวอย่างอันบนสุดต้องทำยังไงคับ
ภฤศ says:
27/05/2553 at 27/05/2553
ก่อนอื่นต้องขอขอบคุณมากเลยครับ เป็นประโยชน์มากๆเลย
และมีคำถามคือถ้าต้องการ เพิ่ม List มากกว่า 1 อันทำยังไงครับ
ขอบคุณครับ
dixon says:
20/11/2553 at 20/11/2553
พอดีไปเจอมาน่าจะตรงกับที่หลายๆท่านต้องการ ครับ
http://return-true.com/2009/08/how-to-jquery-autocomplete/
chaiyaist says:
12/11/2554 at 12/11/2554
//เรียกใช้ไฟล์ jquery
Autocomplete jQuery Plugin
$(document).ready(function(){
var str_month =
$(“#month”).autocomplete( str_month , {
// ture(เปิดใช้งาน)
// false(ปิดใช้งาน)
multiple: false, //ป้นได้หลายค่า
mustMatch: false, //ป้อนได้เฉพาะค่าที่มีให้เลือกเท่านั้น
matchContains: true, //แสดงคำที่มีค่าที่ป้อนอยู่ในคำ
autoFill: false, //เติมคำอัตโนมัติ
});
//#month คือ id ของ inputbox ที่จะให้แสดง
});
ทดสอบพิมพ์ชื่อเดือนไทย หรือ a-k