ทำ Autocomplete ด้วย jQuery Autocomplete Plugin
อ่านกันหรือยัง
วันนี้ผมจะมานำเสนอ การใช้งาน 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/
บทความน่าสนใจ
ผู้เขียน: วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย
เว็บไซต์ :http://www.select2web.com
งานเล็กๆก็ยิ่งใหญ่ได้ ถ้าอยู่ในที่ๆเหมาะสม
มี 15 ความเห็น ในบทความเรื่อง “ทำ Autocomplete ด้วย jQuery Autocomplete Plugin”
แสดงความเห็น
Categories
- 1 week 1 Source (2)
- AppServ (10)
- Array (2)
- Codeigniter (1)
- Computer (7)
- CSS (9)
- Dreamweaver (7)
- Firefox (7)
- Form (2)
- FPDF (15)
- General (31)
- HTML (2)
- Javascript (6)
- jQuery (86)
- Mac (10)
- MySQL (15)
- Navicat (9)
- Other (58)
- PHP (97)
- PHP-function (12)
- Program (8)
- SMF (15)
- SQL (20)
- Theme (1)
- TinyMCE (7)
- webservice (1)
- Wordpress (18)
- คอมฯ ทั่วไป (6)
-
Recent Posts
- akismet ปลักอินกรองแสปมของเวิร์ดเพรส
- WP-CMS Post Control ปลักอินสำหรับซ่อนสิ่งที่ไม่ต้องการในเวิร์ดเพรส
- wordpress flickr manager ปลักอินสำหรับอัปโหลดภาพเก็บที่ flickr
- picpick โปรแกรมที่เว็บโปรแกรมเมอร์ต้องมีไว้ติดเครื่อง
- ขอความเห็น
- todoist โปรแกรมจดรายการสิ่งที่ต้องทำสุดเจ๋ง
- wordpress google xml sitemap หนึ่งในปลักอินที่ท่านต้องติดตั้ง
- แนะนำเว็บให้ความรู้การเขียนโปรแกรมโคตะระเด็ด
- โปรแกรมจดรายการสิ่งที่จะต้องทำ
- แจกภาพปุ่มเอาไปตกแต่งเว็บ
- วิธีสร้างเว็บให้ติดอันดับหนึ่ง
- wordpress ปิงผู้ปิดทองหลังพระ
- วิธีเปิด notepad อย่างรวดเร็ว
- วิธีดึงข้อมูลออกจากฐานข้อมูลของเวิร์ดเพรส แบบสุ่ม
- หารายละเอียดโดเมน
Tags
AppServ Array Back to the basic bug calendar CAPTCHA chart CSS Dreamveawer eclipse error firebug Firefox firefox plugin FPDF General google helios HTML icons Javascript jQuery jquery plugin jquery slide jQuery tutorial jQuery UI Mac MySQL Other pdt PHP phpmailer programming slide slide show SMF smf themes smf themes download smf themes free smf themes thai SQL sql function tooltip Wordpress wordpress plugin
แล้วหากผมมีข้อมูลอยู่ในอยู่ใน table ใน mysql แล้วผม query data เข้ามาใส่แทนใน JavaScript ได้อย่างงัยอ่ะครับเช่นผมมีเดือนต่างๆเก็บไว้ที่ database อ่ะครับ
พอดีผมเองไม่ค่อยได้ใช้ Javascript + php อ่ะครับ แต่จะลองทำก่อนไม่รู้ว่าจะได้เป่า หากได้เดียวจะเอามาให้ตรวจดูครับ JavaScript ยังงูๆปลาๆเลยอ่ะครับ
แต่หากพี่ทำได้ รบกวนช่วยยกตัวอย่างด้วยครับ ขอบคุณครับผม
ใช้คำสั่ง echo ธรรมดาเลย
var str_month = “< ?php loop and echo value from database here?>“;
แทรกโครมเข้าไปเลยตรงนี้ วนลูปดึงเอาเดือนจากดาต้าเบส echo ลงมาเลย คำมันก็จะเรียง ตามแบบที่ต้องการ พอมาถึงฝั่ง javascript มันก็ทำของมันเอง
ผมขออธิบาย php กับ javascript นิดนึงนะ
php ทำงานบนเซิฟเวอร์ ตอนมันทำงานจาวาสคริปต์ยังไม่ถึงคิวจะทำ ถ้าเรา echo แท็ก html ออกมา มันก็เป็น html echo javascript ออกมา มันก็เป็นจาวาสคริปต์
ส่วน javascript ทำงานฝั่งไคลเอนท์ ถ้ามันเห็นข้อความ ที่ขึ้นต้นด้วย <script> เมื่อไร มันจะเข้าใจทันทีว่า นั่นคำสั่งของตัวมัน
เพราะฉะนั้นการเขียนปนกัน เราก็แค่จินตนาการถึง จาวาสคริปต์ รูปสำเร็จ แล้วเราก็ให้ php ช่วย echo ค่าตามนั้น ง่ายๆ
ขอบคุณครับ เดียวลองดู่ก่อนครับ
ลองทำแหล่ะครับได้แหล่ะ แต่มันยากที่ผมใช้ 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
อีกเรื่องครับ
หากผมจะให้มัน ค้นหา(Search) มากกว่าที่จะค้นหาคำแรกของเดือน คือผมต้องการค้นหาคำว่า “คม” ก็จะแสดงคำเดือนทั้งหมดที่มี คม ออกมาน่ะครับ ทำอย่างไรครับ
ผมจะให้มันค้นหาคำว่า คม แทนทีจะให้มันหาคำแรกทำอย่างไรดีครับ
ปรับปรุงโค้ดให้ ของเ่ด่นมันเยิ่นเย้อ และไม่จำเป็นต้องวนลูป แล้วเช็กว่าเป็นตัวท้ายหรือเปล่า แค่ใช้คำสั่ง implode ก็พอ
< ?php
$str_month = implode( ',' , $arr_month );
?>
จะได้สตริงที่มี , คั่นโดยไม่ต้องวนลูปอะไรเลย จาก 9 บรรทัด เหลือบรรทัด เดียว แล้วตอนเขียนแทรกลงใน จาวาสคริปต์ ก็แทรกอย่างนี้ครับ
var str_month = “< ?php echo $str_month ;?>“;
var arr_month = str_month.split(“,”);
ส่วนที่ถามว่าอยากจะให้มันค้นหาคำว่า คมแทนที่ จะหาจากตัวแรก ทำได้ครับผม ลองดูตัวอย่าง
http://jquery.bassistance.de/autocomplete/demo/
ลองพิมพ์ ch ในช่อง Single Bird (remote): จะเห็นว่ามันทำได้อย่างที่เด่นต้องการ
ส่วนทำอย่างไรนั้น เอ่อ… คงต้องศึกษาเพิ่มเติมจากเว็บเขานั่นแหละครับ ผมเองก็ใช้มันแค่ง่ายๆ เลยไม่ได้ศึกษาอย่างที่เด่นต้องการ
ขอบคุณครับ ผมรู้แหล่ะครับว่าจะ Search อย่างไรครับ หาตั้งนานแน่ะครับ แจ๋วๆจริงๆครับผม ผมอยากจะเรียนรู้พวก Java เพิ่มเติมมั่ง อยากเขียนพวก Ajax + JavaScript ตอนนี้เรียน Java แบบเล็กๆอยู่ครับผม
ขอบคุณครับสำหรับความรู้ดีๆครับ
ขอบคุณทั้งท่านผู้ถาม และท่านผู้ตอบที่แสนใจดี
เป็นกำลังใจให้นะครับ
ผมจะให้มันค้นหาคำว่า คม แทนทีจะให้มันหาคำแรกทำอย่างไรดีครับ
$(“#month”).autocomplete( arr_month , {
multiple: true, //ยอมให้ป้อนได้หลายค่า
mustMatch: true, //ป้อนได้เฉพาะค่าที่เตรียมไว้ให้
autoFill: true, //เติมคำอัตโนมัติ
matchContains: true //หาค่าที่ไม่ใช่ตัวเริ่มต้น
});
ผมลองแล้วอ่ะครับ ถ้าใช้แบบ multiple มันจะไม่ support ie 8 ดูจาก demo ก็ไม่ดี งงมากคับ http://jquery.bassistance.de/autocomplete/demo/
แจ่มครับ
ถ้ามีข้อมูลเยอะๆแล้วต้องการให้มีิตัวเลื่อนขึ้นเลื่อนลงเหมือนรูปตัวอย่างอันบนสุดต้องทำยังไงคับ
ก่อนอื่นต้องขอขอบคุณมากเลยครับ เป็นประโยชน์มากๆเลย
และมีคำถามคือถ้าต้องการ เพิ่ม List มากกว่า 1 อันทำยังไงครับ
ขอบคุณครับ