我有一个文本字段,我想基于查询自动提取值。我有一个主文件以及一个保存我的查询的单独文件(getdata.cfc)。
这是我的主文件的文本字段部分:
<cfinput name="search_query" autosuggest="url:getdata.cfc?suggestvalue={cfautosuggestvalue}" maxResultsDisplay="10" showAutoSuggestLoadingIcon="true" size="10" />
以下是getdata.cfc中的代码:
<cfcomponent>
<cffunction name="get_data" access="remote" output="false">
<cfargument name="suggestvalue" required="true">
<cfquery name="get_data" datasource="#application.DSN#">
SELECT DISTINCT myItem
FROM myTable
WHERE myItem LIKE <cfqueryparam value="#suggestvalue#%"
cfsqltype="cf_sql_varchar">
ORDER BY myItem
</cfquery>
<cfif get_data.recordCount eq 1>
<cfreturn ",#get_data.myItem#">
<cfelse>
<cfreturn ValueList(get_data.myItem)>
</cfif>
</cffunction>
</cfcomponent>
文本字段显示正常,但是当我输入单词时,不显示自动提示值。什么都没发生。当我输入文本时,文本就会显示出来。
有什么建议吗?谢谢!
答案 0 :(得分:2)
我转而使用来自很多CF内容的jquery插件,但这里有一个我可以在一些旧的生产代码中使用的例子
<cfinput type="text" name="email" id="email" autosuggest="cfc:cfc.users.lookupEmail({cfautosuggestvalue})" maxresultsdisplayed = "25">
<cffunction name="lookupEmail" access="remote" returntype="array">
<cfargument name="search" type="any" required="false" default="">
<!--- Define variables --->
<cfset var data="">
<cfset var result=ArrayNew(1)>
<!--- Do search --->
<cfquery name="data" datasource="datasource" maxrows="25" cachedwithin="#CreateTimeSpan(0,0,30,0)#">
SELECT distinct email
FROM users
WHERE email LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.search#%">
ORDER BY email
</cfquery>
<!--- Build result array --->
<cfloop query="data">
<cfset ArrayAppend(result, email)>
</cfloop>
<!--- And return it --->
<cfreturn result>
</cffunction>
也许这有帮助
还要确保您的表单周围有cfform标记,并确保您的/ cfide文件夹已映射到您的网站。
查看您的代码并进行比较......这可能是您调用cfc(文件名)
的方式尝试:autosuggest =“cfc:getdata.get_data。({cfautosuggestvalue})”