2010-11-29 48 views
0

J'essaie d'envoyer différentes valeurs dans mon paramètre data pour la saisie semi-automatique, en fonction d'une variable globale précédemment définie lookupType.Comment modifier le paramètre 'data' de saisie semi-automatique sans trop de code répétitif?

Cependant, tous les autres codes sont répétés même si seule la section data est différente.

Comment réduire le code redondant?

Dans un cas, la section data est la suivante:

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

alors que dans une autre, il est comme ceci:

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

Le code complet est ci-dessous:

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

Répondre

0

au lieu de :

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

ont:

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