Как изменить параметр автозаполнения данных без такого большого количества повторяющегося кода? - PullRequest
0 голосов
/ 29 ноября 2010

Я пытаюсь отправить разные значения в моем параметре data для автозаполнения, в зависимости от ранее установленной глобальной переменной lookupType.

Однако весь другой код повторяется, даже если отличается только раздел data.

Как уменьшить избыточный код?

В одном случае секция data выглядит так:

    data: {
        type: "full",
        location: "local",
        name: request.term
    },

в то время как в другом это так:

    data: {
        append: "no",
        doPreprocess: true,
        name: request.term,
        maxResults: 1000
    },

Полный код ниже:

    $( "#lookup" ).autocomplete({
    if($("#hiddenLookupType").val() == "order")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: {
                    type: "full",
                    location: "local",
                    name: request.term
                },
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
    else if($("#hiddenLookupType").val() == "inventory")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: {
                    append: "no",
                    doPreprocess: true,
                    name: request.term,
                    maxResults: 1000
                },
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
});

Ответы [ 2 ]

0 голосов
/ 29 ноября 2010
//calling it:
var parameters =    {
        type: "full",
        location: "local",
        name: request.term
    }

test(parameters);

//the method
function test(dataList){ 
 $( "#lookup" ).autocomplete({
    if($("#hiddenLookupType").val() == "order")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: dataList,
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
    else if($("#hiddenLookupType").val() == "inventory")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: {
                    append: "no",
                    doPreprocess: true,
                    name: request.term,
                    maxResults: 1000
                },
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
});
}
0 голосов
/ 29 ноября 2010

вместо:

 data: {
                    type: "full",
                    location: "local",
                    name: request.term
                },

есть:

data: GetData(this),


 function GetData(el)
 {
    ..Logic Here
 }
...