1. 程式人生 > >使用jquery的autocomplete的方法,進行使用者自定義的顯示列表方法給使用者

使用jquery的autocomplete的方法,進行使用者自定義的顯示列表方法給使用者

最近有個專案,要使用autocomplete,在jquery的UI上面找到了出處,不過有個顯示效果我總是沒法解決。

返回的是一個數組,其中的陣列中的data的內容只是一部分,需要顯示給使用者更多的資訊。比如下拉框的顏色,星級,使用者在

敲擊回車或者單擊的時候,輸出到文字框的是另外的內容,於是就需要在jquery的autocomplete中進行修改。

方法如下:

var caption_value = $('#caption').val();
		var ajax_url = '/design_templates/edit_design_namecheck_ajax.php?' + caption_value; 
		$("#caption").autocomplete({
			source: ajax_url,
			 focus: function (event, ui) {
				 //$('#caption').val(ui.item.v);
				return false;
            },
			select: function(event, ui) {
				//$('#caption').val(ui.item.v);
				return false;
			}
		})
		.data( "autocomplete" )._renderItem = function( ul, item ) {
			return $( "<li></li>" )
				.data( "item.autocomplete", item )
				.append( "<a style='color:" + item.color + "'>" + item.v + "(" + item.desc + ")" + item.star + "</a>" )
				.appendTo( ul );
		};

這裡使用了一個方法,就是在li元素中插入<a>元素,其他的元素,比如span,似乎都不可以,可能是因為a這個是link元素,可以支援點選,或者

autocomplete中原生支援。這個.data()的方法,指明瞭是autocomplete元素,_renderItem()是指渲染每條資料,是指使用者返回的資料,我需要進行加工處理,其中ul是整個下拉框,其中的每條資料是一個li元素。

其中li元素中進行了<a>元素的填充。這裡的item是返回的陣列元素的某一條資料。

在PHP中是這樣處理的:

<?php
setTemplate('none');
$DB = Database::connect();
$returnArr = array();
if (isset($_GET['term'])) {
	
	$sql = "SELECT d.caption, d.design_state_id, c.caption AS cat_caption, c.site_id FROM designs d 
				JOIN avq_categories c ON d.category_id = c.id 
				WHERE d.caption LIKE ".mysql_quote_smart($_GET['term']. '%')." ORDER BY c.site_id, d.caption ASC LIMIT 10";
	//echo $sql;exit;
	$res = $DB->query($sql);
	$row = mysql_fetch_assoc($res);
	// echo '<pre style="text-align: left;">'; print_r($row); echo '</pre>';
	do {
		$removed = '';
		$coloring = '';
		if ($row['site_id'] == 1) $coloring = '#278c16';
		if ($row['site_id'] == 2) $coloring = '#176c8c';
		if ($row['site_id'] == 3) $coloring = '#5f1719';
		if ($row['design_state_id'] == 3) $removed = ' **';
		if ($row['design_state_id'] == 2) $removed = ' *';
		if ($row['cat_caption'] != '') {
			//$returnString = '<span style="color:'.$coloring.';">' . $row['caption'] . ' ('. $row['cat_caption'].')'. $removed.'</span>';
			//$returnString = $row['caption'] . "(" . $row['cat_caption']. ")" . $removed;
			$returnString = array('color'=> $coloring, 'v'=>$row['caption'], "desc" => $row['cat_caption'], "star"=>$removed);
			array_push($returnArr, $returnString);		
		}
	} while ($row = mysql_fetch_array($res));
	//print $returnString;
	echo json_encode($returnArr);
}	
?>

直接通過mysql查詢返回的。記住需要是json格式的陣列。

有不正確的地方,敬請留言。

相關推薦

使用jquery的autocomplete的方法進行使用者定義顯示列表方法使用者

最近有個專案,要使用autocomplete,在jquery的UI上面找到了出處,不過有個顯示效果我總是沒法解決。 返回的是一個數組,其中的陣列中的data的內容只是一部分,需要顯示給使用者更多的資訊。比如下拉框的顏色,星級,使用者在 敲擊回車或者單擊的時候,輸出到文字框的

bar-上下漸變色柱形圖提示資訊定義顯示

var x_data1 = ['0', '1', '2', '3', '4', '5', '6']; // 橫座標 var jstr = [5, 6, 40, 100, 58, 99]; //進場資料 var cstr = [36, 11, 22, 69, 115, 196]; //出場資

實現中等難度通訊錄。需求: 1、定義聯絡人類AddressContact。例項變數:姓名(拼音首字母大寫)、性別、電話號碼、住址、分組名稱、年齡。方法自定義初始化方法(姓名、電話號碼)、顯示聯絡人

<span style="font-size:24px;">// 1、定義聯絡人類AddressContact。例項變數:姓名(拼音,首字母大寫)、性別、電話號碼、住址、分組名稱、年齡。方法:自定義初始化方法(姓名、電話號碼)、顯示聯絡人資訊 { NS

定義jquery的方法將Form表單中的內容轉換成json

// 自定義jquery的方法,將Form表單中的內容轉換成json $.fn.serializeJson=function(){ var serializeObj={}; var array=this

非常實用的定義佈局定義顯示時長的頂部toast

最近在工作中需要彈出頂部toast且顯示時間不固定。從而寫了下面的一個模擬toast的動畫: 先看動畫: public void isShowToast(final boolean isShow,View mToastV) { final int marinTop = 0;//距離頂

Linux下安裝配置 http 修改本機中http伺服器主頁定義顯示內容。

HTTP(Hyper Text Transfer Protocol) 超文字傳輸協議,位於osi模型中的應用層。               安裝:可以使用yum等多種方式安裝,最方便的自然是yum安裝(Redhat需

建立表、修改表、刪除表的方法 建立主鍵約束、外來鍵約束、使用者定義約束的方法 建立查詢表的方法及使用截斷表的方法理解約束在資料庫中的作用

撰寫人——軟工二班——陳喜平 – 實驗內容: – 一、建立表 – 建立圖書館管理系統所涉及的表 – 建立產品銷售系統所涉及的表 – 圖書表book(bid,bname,price,qty) – 書庫表lib(lid,lname,address) – 讀者表reader

定義列表頭部新增元素的方法即insert_head 方法

class Mylist(list):    def insert_head(self, n):        # 下面這種方法是不可行的,在這個方法中insert_head(2)的結果就是

js定義右鍵選單點選定義選單隱藏、顯示指定div

       首先寫好自己想要的右鍵選單的樣子,然後設定該選單div為預設隱藏,滑鼠右擊後設置css顯示該選單(display:block;),並禁用瀏覽器右鍵預設選單。 接下來就可以寫選單中具體項的

對gridview繫結資料的操作方法,定義顯示內容

GridView中Eval和 Bind 的使用 Eval:繫結的是隻讀資料的顯示;Bind:可以繫結只讀資料也可以繫結更新資料,Bind方法還把欄位和控制元件的繫結屬性聯絡起來,使得 資料控制元件(比如GridView等)的Update、Insert和Delete等方法可以使用這種聯絡來作出

內建函式isinstanceissubclass 反射定義內建方法來定製類的功能元類

一:內建函式      1,isinstance 判斷某個物件是不是屬於某一型別?        class Foo:            pass        obj=Foo()        print(isinstance(obj,Foo))# 在python3中統

定製ListView的介面(使用定義列表項佈局一邊顯示水果圖片一邊顯示水果文字)以及ListView的點選事件

只能顯示一段文字的ListView實在是太過單調,我們現在就來對ListView的介面進行定製,讓它可以顯示更加豐富的內容。 首先,我們需要準備好一組水果圖片,分別對應上面提供的每一種水果,待會我們要讓這些水果名稱的旁邊都有一個圖樣。   接著定義一個實體類,作為L

統一呼叫微信支付結果通知介面如何觸發定義方法或不同的指定方法

統一呼叫微信支付通知如何執行自定義的方法 可以利用attach引數 附加資料 attach 否 String(127) 深圳分店 附加資料,在查詢API和支付通知中原樣返回,可作為自定義引數使用。 官方已經說明這可以當作自定義引數,而且下單填寫的內容會在支付通知中原樣返回 所以在下單

Android 設定Activity全屏顯示沒有TitleBar;定義TitleBar

在setContentView(R.layout.main);前加入如下兩行程式碼: getWindow().setFlags(WindowManager.LayoutParam.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG

自己試驗在spring的環繞通知裡獲取目標物件的類名和目標方法的引數類名用於根據定義註解判斷訪問許可權有沒有更好的辦法高手指點一下

public Object doInBusiness(ProceedingJoinPoint pjp) throws Throwable{   Object[] args = pjp.getArgs();   Class[] argsClass = new Class[ar

url獲取資料介面呼叫方法+定義顯示(介面回撥)

呼叫方法 new MyTask(new MyTask.Icallbacks(){});//生成返回值myTask.execute("地址");//介面設定 public class MyNetTask

python Json的一點收穫定義序列化方法

PyMOTW: json 模組: json 目的: JavaScript物件格式序列器 python版本: 2.6 json模組提供了一個類似於pickle中用於轉換記憶體中python物件為一個序列表示形式(“JavaScript Object Notation”)的A

菜鳥電子面單定義區設定方法

菜鳥電子面單列印元件,自定義列印區展示內容 客戶一般要求自定義列印區裡面,展示訂單備貨資訊。 但是官方文件菜鳥列印互動協議裡面介紹的data設定goodsInfo這種方法,經過試驗是沒法使用的。 後來發現由於templateURL可以自己定義。那就自己設定一個url,

IOS控制元件系列----使用UITableView實現網格佈局定義顯示列數

先放一引效果圖: 在IOS中達到類似Android中的GridLayout 通常是使用UIConlectionView,這個元件是平果公司已經封裝好的,直接實現相應的介面即可。不知道各位道友是否也曾想過用UItableView來擼一個這個東西,這可能會有一點偏執,但對

樹莓派視窗系統啟動後自動執行定義的程式的實現方法

視窗系統啟動後,自動執行自定義的程式的實現方法進入當前使用者HOME目錄下的.config目錄(這是一個隱藏目錄,需用ls -a顯示出來)cd ~/.config 當前使用者是pi, 其HOME目錄是/home/pi, 上述命令相當於 cd /home/pi/.config建