2

次のコードで検索を実行しようとしていますが、機能しません。search.cfmページで返される値は、検索フィールドに入力した値だけです(オートサジェスト値をクリックしても、返されません。実際に入力した文字だけが返されます)。

<cfform class="titleSearchForm" id="searchForm" action="search.cfm?GameID=#cfautosuggestvalue.GameID#" method="post">
    <fieldset>
        <cfinput type="text" class="titleSearchField" name="TitleName" onChange="form.submit()" autosuggest="cfc:gz.cfcomp.search.AutoSuggestSearch({cfautosuggestvalue})">
        <input type="button" class="titleSearchButton" value=" " />
    </fieldset>
</cfform>

CFCでのクエリ:

    <cfquery name="SearchResult" datasource="myDSN">
        SELECT CONCAT(titles.TitleName, ' on ', platforms.PlatformAbbreviation) AS sResult, games.GameID
        FROM
            games
            Inner Join platforms ON games.PlatformID = platforms.PlatformID
            Inner Join titles ON titles.TitleID = games.TitleID
        WHERE
            UCase(titleName) LIKE Ucase('#ARGUMENTS.SearchString#%')
        ORDER BY
            titleName ASC;
    </cfquery>

2つのこと:まず、GameIDをAJAXリクエストを行うページに戻したいと思います。sResultなぜ戻ってこないのかわかります。GameIDを含まないvarのみを返すためです。GameID値を表示せずに返す方法はありますか?

2番目のこと:値が返された後、自動提案から値を取得するにはどうすればよいですか?GameIDを取得したい場合、またはそれができない場合は、クエリでそれを使用するための「TitleName」と言いますか?

私はそれを次のようにフォームに渡してみました:action="search.cfm?GameID=#cfautosuggestvalue.GameID#"-しかし、それは機能しません。autosuggestionvalue変数を参照して使用するにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

残念ながら、返すことができるのは単純な値のリスト/配列のみです。名前と別のキーの両方を返すことはできません。回避策があります。名前が一意である場合は、サーバーで検索できます(つまり、「Raymond」を1に変換します)が、これは一意の名前に対してのみ機能します。ここで詳細に説明するブログエントリがあります。

http://www.coldfusionjedi.com/index.cfm/2009/11/22/Ask-a-Jedi-ColdFusion-Autosuggest-on-2-Columns

于 2010-03-11T14:40:34.933 に答える
1

プロトタイプ/scriptaculousでafterUpdateElementを使用しているか、JQueryでresult()関数を使用している場合、これは可能であり、はるかに簡単です。

次の例は、それぞれのサイトから抜粋したものです。

プロトタイプ/スクリプト:

<ul>
    <li id="1">your mom</li>
    <li id="2">yodel</li>
</ul>

new Ajax.Autocompleter("autocomplete", "autocomplete_choices", "/url/on/server", {
  afterUpdateElement : getSelectionId
});

function getSelectionId(text, li) {
    alert (li.id);
}

JQuery

var data = [ {text:'Link A', url:'/page1'}, {text:'Link B', url: '/page2'} ];
$("...").autocomplete(data, {
  formatItem: function(item) {
    return item.text;
  }
}).result(function(event, item) {
  location.href = item.url;
});
于 2010-04-22T19:38:51.223 に答える