1

ユーザーが入力ボックスに 3 文字以上入力したときに、サイトにオートコンプリートを配置したいと考えています。これにはautocomplete.jsプラグインを使用しています。私がやっていることは、キーアップ、配列の形式ですべての検索結果を返す URL への ajax 呼び出しの送信です。次に、autoComplete.Set("mygroup1", srvcsCitiesSafe, "newPopupStyle"); を呼び出します。$("#CAT_Custom_283923").trigger('keyup');

問題は、最初のキーアップ ajax 呼び出しで結果が表示されないことです。しかし、2回目のajax呼び出しと息子ではうまくいきます。何が起こっているのか誰か教えてもらえますか...ここに私のサイトのURLがありますhttp://dbtrialsite.businesscatalyst.com/オートコンプリートテキストボックスフィールドは郊外/都市です:

以下は私のコードです

$(document).ready(function() {

    $("#CAT_Custom_283923").keyup(function() {

        var mystring = $('#CAT_Custom_283923').val();    

        if (mystring.length == 2) {
            console.log(mystring);
            console.log(mystring.length);
            console.log("Lenght is greater than 2");

            var srvcsCitiesSafe=[];
            var srvcsPCSafe=[];

            var dataString = 'CAT_Custom_283923='+ $('#CAT_Custom_283923').val()+
                '&CAT_Custom_284431='+$('#CAT_Custom_284431').val() ;

            $.ajax({
                type: "POST",
                url: 'http://dbtrialsite.businesscatalyst.com/Default.aspx?CCID=17248&FID=100351&ExcludeBoolFalse=True&PageID=9350053',

                data: dataString,

                beforeSend: function () {
                    //put loader here, or hide something    
                    console.log('Loading...');
                },
                success: function (response) {

                    console.log('Ok Results Loaded');

                    var srvcs_json = [];
                    mydata=$(response);

                    $(".srvcs", mydata).each(function() {
                        var myString=$(this).html();
                        srvcs_json.push( jQuery.parseJSON( myString ) );
                    });


                    var srvcsCities =[];
                    var srvcsPC =[];
                    for (var i=0; i < srvcs_json.length; i++) {
                        srvcsCities[i] = srvcs_json[i]['city'];
                        srvcsPC[i] = srvcs_json[i]['postcode'];
                    }

                    srvcsCitiesSafe = eliminateDuplicates(srvcsCities);
                    srvcsPCSafe     = eliminateDuplicates(srvcsPC);
                },
                complete: function () {
                    //calling autofill function
                    console.log("auto called");
                    autoComplete.Set("mygroup1", srvcsCitiesSafe, "newPopupStyle");
                    $("#CAT_Custom_283923").trigger('keyup');
                }

            });    //end ajax call
        }

    });
////////////////////////////////////////////////////////////////////////////////////

});
4

1 に答える 1

0

Web サービスのテスト中に問題が見つかりました。最初のajax呼び出しの後、オートコンプリートはコンテンツを表示しませんが、そこにあります。次に、JavaScript コードをデバッグし、入力に焦点を合わせている間に、オプションが表示されました。おそらく、このオートコンプリート バージョンにはバグがあります。あなたの問題を「解決」するために、私はこれをしました:

$.ajax({
type: "POST",
url: 'http://dbtrialsite.businesscatalyst.com/Default.aspx?CCID=17248&FID=100351&ExcludeBoolFalse=True&PageID=9350053',

data: dataString,

beforeSend : function() {
    //put loader here, or hide something    
    console.log('Loading...');
    $('#ajax-loader').show();
},

success: function(response){
    console.log('Ok Results Loaded');
    $('#ajax-loader').hide();

    var srvcs_json = [];
    mydata=$(response);

    $(".srvcs", mydata).each(function(){
        var myString=$(this).html();
        srvcs_json.push( jQuery.parseJSON( myString ) );
    });

    var srvcsCities =[];
    var srvcsPC =[];
    for (var i=0; i < srvcs_json.length; i++) {
        srvcsCities[i] = srvcs_json[i]['city'];
        srvcsPC[i] = srvcs_json[i]['postcode'];
    }

    srvcsCitiesSafe = eliminateDuplicates(srvcsCities);
    srvcsPCSafe     = eliminateDuplicates(srvcsPC);

    console.log("auto called");
    autoComplete.Set("mygroup1", srvcsCitiesSafe, "newPopupStyle");
    $("#CAT_Custom_284431").focus();
    $("#CAT_Custom_283923").focus();
}
});//end ajax call

お役に立てば幸いです。

于 2012-10-05T19:03:31.787 に答える