cfinputタグのautosuggestを使ってみる
今更ですがどんな感じなのか試してみました。
早速サンプルソースから(sample2.cfm)
<cfform name="userForm"> <table> <tr> <td> ID </td> <td> <cfinput id="Person_Name" name="Person_Name" autosuggest="cfc:jp.classmethod.UserService.getIDNames({cfautosuggestvalue})" /> </td> </tr> </table> </cfform>
D/Bアクセス側のサンプルソース(UserService.cfc)
<cfcomponent output="false"> <cffunction name="getIDNames" access="remote" returntype="array" output="false"> <cfargument name="suggestvalue" required="true"> <!--- この関数は選択候補を配列として返します。 ---> <cfset var namearray = ArrayNew(1)> <!--- 入力された文字に一致する固有の姓をすべて取得します。 ---> <cfquery name="getDBLoginIDs" datasource="blogdb"> SELECT DISTINCT(Person_Name_Alfa) FROM Blog_Employee WHERE Person_Name_Alfa like <cfqueryparam value="#suggestvalue#%" cfsqltype="cf_sql_varchar"> </cfquery> <!--- クエリーを配列に変換します。 ---> <cfloop query="getDBLoginIDs"> <cfset arrayAppend(namearray, getDBLoginIDs.Person_Name_Alfa)> </cfloop> <cfreturn namearray> </cffunction> </cfcomponent>
※参考までにD/Bテーブルは以下です。
実行結果です。
入力を補助してくれるので、うまく応用すればなんか使い道はありそうな感じです。