2011-06-23 15 views
0

テキストボックスの入力に応じてデータソースを変更するjqueryオートコンプリートをセットアップしました。jqueryオートコンプリートデータソースの変更

jqueryのデータソースを変更した後、上矢印または下矢印ボタンを押すまでは起動しません。

私はデータソースを確認するためにfirebugを使用しましたが、何か問題は見つけられません。

誰かがコントロールに上下矢印キーを送信する方法を教えたり、他の方法でこれを解決できますか?

ありがとうございます!

編集:私は次のようにJSONでこれを交換しましたが、要求がエラー、警告ボックスは、このHTMLの入力ボックスがある

jQuery(function() { jQuery("input#autocomplete").autocomplete({ contentType: 'application/json; charset=utf-8', dataType: 'json', mustMatch: false, limit: 10, minChars: 2,

  select: function (event, ui) { 
       AutoCompleteSelectHandler(event, ui) 
      } 
      , 
      source: function (request, response) { 
       jQuery.ajax({ 
        url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb", 
        data: {}, 
        dataType: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        dataFilter: function (data) { return data; }, 
        success: function (data) { 
         alert(data); 
        }, 
        error: function (XMLHttpRequest, textStatus, 

errorThrown) { alert(textStatus); } }); } });

}); 

来るようです。

私はここで何が間違っていますか?私は、Webサービスが正しく機能していることを確認しました。

EDIT2:私は次のような変更を行っています

jQuery(function() { jQuery("input#autocomplete").autocomplete({

  minChars: 2, 

      select: function (event, ui) { 
       AutoCompleteSelectHandler(event, ui) 
      } 
      , 
      source: function (request, response) { 
       jQuery.ajax({ 
        url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb", 
        data: '{ Suburb: "' + 

jQuery("#autocomplete").val() + '" }', dataType: "json", type: "POST", contentType: "application/json; charset=utf-8", dataFilter: function (data) { return data.d; }, success: function (data) { alert(data.d); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); } });

}); 

ため、アラートが正常に動作しています。しかし、jqueryは一致リストを表示しません。これはどうすればいいですか?

EDIT 2:

私はWebサービスとの問題をうまくするために管理しています。オートコンプリートでリストが表示されるようにレスポンスを設定するにはどうすればよいですか?現時点では、リストの各項目が私に項目の完全なリストを表示します。

ie)「ab」と入力すると、3つのものが一致すると3つの異なる行に同じ結果が3回表示されます。

私は次のようにjqueryのセットアップがあります。

jQueryの(機能(){ jQueryの( "入力#のオートコンプリート")をオートコンプリート({

  minChars: 2, 

      select: function (event, ui) { 
       AutoCompleteSelectHandler(event, ui) 
      } 
      , 
      source: function (request, response) { 
       jQuery.ajax({ 
        url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb", 
        data: '{ Suburb: "' + jQuery("#autocomplete").val() + '" }', 
        dataType: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        dataFilter: function (data) { return data; }, 
        success: function (data) { 

                response($.map(data.d, function (item) { 
                 return { 
                  value: data.d 
                 } 
                       })) 


        }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert(textStatus); 
        } 
       }); 
      } 
     }); 

すべてのヘルプははるかに高く評価され、

+0

あなたの説明は)私には(少しは意味になります。例えば、 'データソースの後jqueryの上変更すると、上向き矢印ボタンまたは下向き矢印ボタンが押されるまで発射されません。 "jquery上のデータソースとは何ですか?何が変わるのですか?発射されないのは何ですか?コードを共有しないと、 「オートコンプリートを使用していますが、機能していません。助けてください」と言う人を助けることは不可能です。 – davin

+0

xmlhttpobjectでリクエストを使用してページからリストを取得する場合、 というように、データソースは単なる文字列配列です。 データソースを変更すると、オートコンプリートリストは表示されません。ただし、上矢印キーまたは下矢印キーを押すと、リストが表示されます。 私はカスタムデータソースでjsonを使用するようにしてください。 – rlee923

+0

まだ明確ではなく、確かに再現性がありません。あなたがhttp://jsfiddle.netをセットアップすれば、それは皆の人生をはるかに簡単にし、あなたの問題を解決するチャンスを増やすでしょう。 – davin

答えて

0

私はそれがうまくいっていますが、項目がJSONオブジェクトではなく文字列配列になることはわかりません。各項目をJSONとして解析しようとしましたが、仕事。

ここでは、webservice jqueryの組み合わせを使用した作業用jquery jsonがあります。

jQueryの(機能(){ jQueryの( "入力#のオートコンプリート")。オートコンプリート({

  minChars: 2, 

      select: function (event, ui) { 
       AutoCompleteSelectHandler(event, ui) 
      } 
      , 
      source: function (request, response) { 
       jQuery.ajax({ 
        url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb", 
        data: '{ Suburb: "' + jQuery("#autocomplete").val() + '" }', 
        dataType: "json", 
        type: "POST", 
        minChars: 2, 
        contentType: "application/json; charset=utf-8", 
        dataFilter: function (data) { return data; }, 
        success: function (data) { 
         var obj = jQuery.parseJSON(data.d); 
         response($.map(obj, function (item) { 
          var item_obj = jQuery.parseJSON(item); 
          return { 
           value: item[1] 


          } 
         })) 


        }, 
        //      parse: function (data) { 
        //       var parsed = []; 
        //       data = data.d; 

        //       for (var i = 0; i < data.length; i++) { 
        //        parsed[parsed.length] = { 
        //         data: data[i], 
        //         value: data[i].value, 
        //         result: data[i].value 
        //        }; 
        //       } 

        //       return parsed; 
        //      }, 
        //      formatItem: function (item) { 
        //       return item.value; 
        //      }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert(textStatus); 
        } 
       }); 
      } 
     }); 



    });