2009-05-12 16 views
6

私は2つの入力フィールドCityとVenueを持つページを持っています。私はDevbridgeからオートコンプリートプラグインを持っています。私は今会場の欄で作業したいと思っています。私がこれまで持っていたJavaScriptは以下のとおりです。Jqueryのオートコンプリート・チェーン・リクエスト

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#Event_City').autocomplete({ 
      serviceUrl: '<%=Url.Action("GetCities", "Search") %>', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { country: 'Yes' }, 
     }); 
     $('#Event_Venue').autocomplete({ 
      serviceUrl: '<%=Url.Action("GetVenues", "Search") %>', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { city: $("#Event_City").val() }, 
     }); 
    });  
</script> 

秒オートコンプリートは、私のコントローラのアクションに追加PARAMTER(都市)を渡します。私はそれを使って、その都市の会場への私の反応を制限します。このパラメータは受信されましたが、#Event_Cityに入力された現在の値は含まれていません。代わりに、デフォルト値が含まれます。

オートコンプリートが呼び出されたときに値を評価する方法を知っている人はいますか?

私はちょうどJavascriptで始まっていますので、優しくしてください。

おかげで、それはページがロードされるときに、オートコンプリートがテキストボックスに添付されているため、デフォルト値は含まれてい

+0

を私は同じことを尋ねることを約ありました。私はパラメータ '普通'を渡そうとしていましたが、onchangeイベントを使わずにフィールドが更新されないと思います。 –

答えて

7

@Ianマッケイ:私はそれが非常に汎用性だとして、この1つはとても好きな傾向がある(デモページ)次のようにの「変更」イベントにバインドする:

$(document).ready(function() { 
    $('#Event_City').autocomplete({ 
     serviceUrl: '', 
     minChars:2, 
     width: 300, 
     delimiter: /(,|;)\s*/, 
     deferRequestBy: 150, //miliseconds 
     params: { country: 'Yes' }, 
    }).change(function(){ 
     $('#Event_Venue').autocomplete({ 
      serviceUrl: '', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { city: $("#Event_City").val() } 
     }); 
    }); 
}); 
+0

これはオートコンプリートプラグインをテキストボックスに複数回バインドしないと確信していますか?これは悪いことかもしれません。同様に、最初のテキストボックスの値を20回変更すると、2回目のテキストボックスは20回自動的に呼び出されます(したがって、一度にバックエンドに20回の非同期呼び出しが行われます)。 o_0 – KyleFarris

+0

@カイル - 私はあなたが正しいと信じています。これは、ユーザーが戻って都市を変更することを決定した場合に起こります。標準のオートコンプリートjQueryプラグインには "破棄"オプションがありますが、これは渡すことはできませんが、これは行いません。 –

3

理由。それを新しい値で更新するには、プラグインはパラメータオブジェクトのプロパティを更新する方法を提供する必要があります。または、2番目の要素でそのパラメータを破棄してから、ユーザーが最初に変更するたびに再構築することができます自分の価値。あなたが選んだオートコンプリートライブラリはかなり軽量に見えます(あなたのケースでは必ずしも悪いことではありません...)、この機能をサポートしていないようです。

他のライブラリをお試しください。市に基づいてフィルタリングする会場のためのオートコンプリートを得るために、あなたが必要 -

http://view.jquery.com/trunk/plugins/autocomplete/demo/

+0

あなたは非常に良い点を挙げる+1 – ichiban

関連する問題