2010-11-29 3 views
0

Ich versuche, verschiedene Werte in meinem data Parameter für die automatische Vervollständigung zu senden, abhängig von einer zuvor festgelegten globalen Variablen lookupType.Wie ändert man den Autocomplete-Parameter "data" ohne so viel sich wiederholenden Code?

Jedoch alle anderen Code in wiederholt, obwohl nur die data Abschnitt ist anders.

Wie reduziere ich den redundanten Code?

In einem Fall der data Abschnitt ist dies:

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

während in anderen ist es dies wie:

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

Der vollständige Code ist unten:

$("#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"); 
     } 
    } 
}); 

Antwort

0

statt :

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

haben:

data: GetData(this), 


function GetData(el) 
{ 
    ..Logic Here 
} 
0
//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"); 
     } 
    } 
}); 
}