4

現在、UI オートコンプリートを使用して動作するコードがあり、mysql DB から取得した正しいデータが表示されているようです。ここで、複数の値を受け入れることができるようにして、物事を複雑にしたいと考えています。私はインターネットを上下に検索しましたが、動作するようにコードを修正できません。私はjqueryの初心者で、特にオートコンプリートを使用しています。これが私がこれまでに持っているものです..

$('#companyautocomplete').autocomplete({
    source: function(request, response) {
        //separator: ' ',
        $.ajax({
            url: "company_search.php",
            dataType: "json",
            data: {
                name_startsWith: request.term,                        
                term: $('#companyautocomplete').val(),

            },
            success: function(data) {
                response($.map(data, function(item) {
                    return {
                        compid: item.compid,
                        label: item.value + ' (' + item.address + ', ' + item.city + ', ' + item.state + ', ' + item.zipcode + ')',
                        value: item.value,
                        address: item.address + ', ' + item.city + ', ' + item.state + ', ' + item.zipcode,
                        phone: item.phone,
                        problematic: item.problematic
                    }
                }))
            },  
        });
    },
    select: function(event, ui) {
        $('#companyautocomplete').val(ui.item.value);
        $('#companyid').val(ui.item.compid);
        $('#c_address').val(ui.item.address);
        $('#c_phone').val(ui.item.phone);
        if (ui.item.problematic!=1){
            $('#companyautocomplete').removeClass("ui-autocomplete-error");
            document.getElementById('Sendbutton').style.display="block";
        } else {
            $('#companyautocomplete').addClass("ui-autocomplete-error");
            document.getElementById('Sendbutton').style.display="none";
        }   
    }
});

これは、company_search.php から得られる応答です...

[{"compid":"36","value":"MCDONALD OF ALL SAINTS RD","address":"9261 all saints rd","phone":"","problematic":"0","zipcode":"20723","city":"Laurel","state":"MD","completeaddress":"9261 all saints rd, Laurel, MD, 20723"},{"compid":"37","value":"MCDONALD OF BOWIE","address":"4306 nw CRAIN HWY","phone":"","problematic":"0","zipcode":"20716","city":"Bowie","state":"MD","completeaddress":"4306 nw CRAIN HWY, Bowie, MD, 20716"}]

これまでのところ、すべてが私が望むように機能しますが、複数の値を受け入れません。どうすればこれを達成できますか? 前もって感謝します !!

4

1 に答える 1

7

ついに私は自分の問題に対する答えを見つけました!! これは、リモートmysqlDBから応答を取得する複数の値/入力を使用する最終的なコードです。

$(function() {
    function split( val ) {
    return val.split( /,\s*/ );
    }
    function extractLast( term ) {
    return split( term ).pop();
    }

    $( "#companyautocomplete" )
    // don't navigate away from the field on tab when selecting an item
    .bind( "keydown", function( event ) {
    if ( event.keyCode === $.ui.keyCode.TAB &&
    $( this ).data( "autocomplete" ).menu.active ) {
    event.preventDefault();
    }
    })
    .autocomplete({
    source: function( request, response ) {
        $.getJSON( "company_search.php",{
            term: extractLast( request.term )},
            function( data ) {
            response( $.map( data, function( item ) {
                  return {
                        compid: item.compid,
                        label: item.value + ' (' + item.address + ', ' + item.city + ', ' + item.state + ', ' + item.zipcode + ')',
                        value: item.value,
                        address: item.address + ', ' + item.city + ', ' + item.state + ', ' + item.zipcode,
                        phone: item.phone,
                        problematic: item.problematic
                  }
            }));
        }
    );
    },
    search: function() {
        // custom minLength
        var term = extractLast(this.value);
        if (term.length < 3) {
            return false;
        }
    },
    focus: function() {
        // prevent value inserted on focus
        return false;
    },
    select: function( event, ui ) {
        $('#companyautocomplete').val(ui.item.value);
        $('#companyid').val(ui.item.compid);
        $('#c_address').val(ui.item.address);
        $('#c_phone').val(ui.item.phone);
        if (ui.item.problematic!=1){
            $('#companyautocomplete').removeClass("ui-autocomplete-error");
            document.getElementById('Sendbutton').style.display="block";
        } else {
            $('#companyautocomplete').addClass("ui-autocomplete-error");
            document.getElementById('Sendbutton').style.display="none";
        }
    }
});

});

今ではそれは魅力のように機能します。これが答えを探している他の誰かに役立つことを願っています。

于 2012-05-20T02:49:52.910 に答える