2

Jens great example に基づいて、ColdFusion を使用して簡単な jquery オートコンプリートを実行しようとしています。

HTML:

<form name="merchantSearch" id="merchantSearch" method="post" action="/index.cfm/shop.store/">                  
        <input type="text" name="state" id="state"/>
        <input type="submit" name="submit" id="submit" value="" class="searchButton"/>                          
        <input type="hidden" name="merchantID" id="merchantID"/>
 </form>

json 構造体全体が選択ボックスに表示されます。1 つをクリックすると、構造体全体が入力されます。オートコンプリートは、json をどうするかについて本当に混乱しているようです。

コールドフュージョン:

    <cfloop query="request.qMerchants">
        <cfset request.merchantStruct = StructNew()>
        <cfset request.merchantStruct["merchantID"] = #request.qMerchants.merchantID#>

        <cfset request.altText = altText..."
        <cfset request.merchantStruct["label"] = #request.qMerchants.merchant#&#request.altText#>

    <cfset ArrayAppend(request.merchantArray, request.merchantStruct)>
</cfloop>


<cfoutput>  
    #serializeJSON(request.merchantArray)#
</cfoutput>

Jクエリ:

$(document).ready(function(){

     $("#state").autocomplete(          
           "xhr/merchantAutoComplete.cfm",     
           {
           minLength:2, 
           minchars:2,
           autoFill:false,
           select:function(event,ui) {
               $("#merchantID").val(ui.item.merchantID);
               $("#merchant").val(ui.item.merchant);
             }
           }
      );     

});

CF ファイルは json 形式のデータを返しますが、json のままです。結果は次のようになります。

[
 {"label":"AAA 112 pts\/$","merchantID":6},
 {"label":"BBB 64 pts\/$","merchantID":62},
 {"label":"CCC  48 pts\/$","merchantID":277},
 {"label":"DDD 144 pts\/$","merchantID":278},
 {"label":"EEE  80 pts\/$","merchantID":279}
]

1 つを選択すると、json 構造体全体が選択ボックスに配置されます。何かを取得するための適切な jquery、jquery UI、および css ファイルのグループがあると思いますが、これを実際に肥大化させるためだけに投稿します。

<script src="/assets/js/jquery/jquery.autocomplete.js"></script>
<script src="/assets/js/jquery/jquery1.4.2.js"></script>
<link rel="stylesheet" href="/assets/css/jquery.autocomplete.css" type="text/css" media="screen, projection" />
<script src="/assets/js/jquery/jquery-ui-1.8.2.js"></script>

「ラベル/値」の問題だと確信していますが、何も役に立たないようです。どんな提案も素晴らしいでしょう..ありがとう!! ジョン

これはまだ分かっていません。リモート呼び出しは適切にフォーマットされた json 構造体を返していると思います。次のようになります:
[{"value":"FedEx Office 48 pts per $","id":578},{"value":"Fergie Shoes.com 88 pts per $","id":784}]

オートコンプリート js は次のようになります。

 $(document).ready(function(){
     $("#merchantLabel").autocomplete(          
               "xhr/merchantAutoComplete.cfm",     
              {           
               select:function(event,ui) {
                   $("#merchantID").val(ui.item.id);  
                   return false;
                }
              }
         ); 
    });

html は次のようになります。

 <form name="merchantSearch" id="merchantSearch" method="post" action="/index.cfm/shop.store/">                  
        <input type="text" name="merchantLabel" id="merchantLabel"/>
        <input type="submit" name="submit" id="submit" value="" class="searchButton"/>                          
        <input type="hidden" name="merchantID" id="merchantID"/>  
    </form> 
4

1 に答える 1