autocomplete by ajax (JS)

สร้างฟังก์ชัน autocomplete ให้ใช้งานแบบง่าย ด้วย ajax

เป็นครื่องมือที่ช่วยประหยัดเวลาของใช้งานในการค้นหาข้อมูลในโปรแกรมของเรา เพียงแค่ป้อนข้อมูลส่วนใดส่วนหนึ่งในรายการที่มีอยู่ มันก็จะเดาคำที่ตรงคำนั้นๆ ออกมาให้ผู้ใช้เลย






HTML Code ตัวอย่าง


  • <html>  
  • <head>  
  • <title></title>  
  • <script type="text/javascript" src="autocomplete.js"></script>  
  • <link rel="stylesheet" href="autocomplete.css"  type="text/css"/>  
  • </head>  
  • <body>  
  • <form id="form1" name="form1" method="post" action="">  
  •   <input name="show_arti_topic" type="text" id="show_arti_topic" size="50" />  
  •   <input name="h_arti_id" type="hidden" id="h_arti_id" value="" />  
  • </form>  
  • <script type="text/javascript">  
  • // แทรก javascript  
  • </script>  
  • </body>  
  • </html>  



  • Javascript Code

    1. <script type="text/javascript">  
    2. function make_autocom(autoObj,showObj){  
    3.     var mkAutoObj=autoObj;   
    4.     var mkSerValObj=showObj;   
    5.     new Autocomplete(mkAutoObj, function() {  
    6.         this.setValue = function(id) {        
    7.             document.getElementById(mkSerValObj).value = id;  
    8.         }  
    9.         if ( this.isModified )  
    10.             this.setValue("");  
    11.         if ( this.value.length < 1 && this.isNotClick )   
    12.             return ;      
    13.         return "gdata.php?q=" +encodeURIComponent(this.value);  
    14.     });   
    15. }     
    16.    
    17. // การใช้งาน  
    18. // make_autocom(" id ของ input ตัวที่ต้องการกำหนด "," id ของ input ตัวที่ต้องการรับค่า");  
    19. make_autocom("show_arti_topic","h_arti_id");  
    20. </script>  

    gdata.php Code

    1. <?php  
    2. header("Content-type:text/html; charset=UTF-8");          
    3. header("Cache-Control: no-store, no-cache, must-revalidate");         
    4. header("Cache-Control: post-check=0, pre-check=0", false);         
    5. // เชื่อมต่อฐานข้อมูล  
    6. $link=mysql_connect("localhost","root","123456"or die("error".mysql_error());  
    7. mysql_select_db("database_name",$link);  
    8. mysql_query("set character set utf8");  
    9.    
    10. $q = urldecode($_GET["q"]);  
    11. $pagesize = 50; // จำนวนรายการที่ต้องการแสดง  
    12. $table_db="article"// ตารางที่ต้องการค้นหา  
    13. $find_field="arti_topic"// ฟิลที่ต้องการค้นหา  
    14. $sql = "select * from $table_db  where locate('$q', $find_field) > 0 order by locate('$q', $find_field), $find_field limit $pagesize";  
    15. $results = mysql_query($sql);  
    16. while ($row = mysql_fetch_array( $results )) {  
    17.     $id = $row["arti_id"]; // ฟิลที่ต้องการส่งค่ากลับ  
    18.     $name = ucwords( strtolower$row["arti_topic"] ) ); // ฟิลที่ต้องการแสดงค่า  
    19.     // ป้องกันเครื่องหมาย '  
    20.     $name = str_replace("'""'"$name);  
    21.     // กำหนดตัวหนาให้กับคำที่มีการพิมพ์  
    22.     $display_name = preg_replace("/(" . $q . ")/i""<b>$1</b>"$name);  
    23.     echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";  
    24. }  
    25. mysql_close();  
    26. ?>  




    crd : ninenik