Как редактировать этот код в автозаполнении AJAX для JQuery - PullRequest
0 голосов
/ 01 сентября 2011

привет, я использую ajax autocomplete for jquery плагин

http://www.devbridge.com/projects/autocomplete/jquery/

есть код

  function Autocomplete(el, options) {
    this.el = $(el);
    this.id = options.id;
    this.el.attr('autocomplete', 'off');
    this.suggestions = [];
    this.data = [];
    this.badQueries = [];
    this.selectedIndex = -1;
    this.currentValue = this.el.val();
    this.intervalId = 0;
    this.cachedResponse = [];
    this.onChangeInterval = null;
    this.ignoreValueChange = false;
    this.serviceUrl = options.serviceUrl;
    this.isLocal = false;

    //this.options.fnFormatResult = fnFormatResult();

    this.options = {
      autoSubmit: false,
      minChars: 1,
      maxHeight: 300,
      deferRequestBy: 0,
      width: 0,
      highlight: true,
      params: {}, 
      fnFormatResult: fnFormatResult,      
      delimiter: null,
      zIndex: 9999
    };
    this.initialize();
    this.setOptions(options);
  }

там

this.options = {
  autoSubmit: false,
  minChars: 1,
  maxHeight: 300,
  deferRequestBy: 0,
  width: 0,
  highlight: true,
  params: {}, 
  fnFormatResult: fnFormatResult,      
  delimiter: null,
  zIndex: 9999
};

имеет функцию для форматирования результата

fnFormatResult: fnFormatResult,   

Я хочу использовать функцию, отличную от fnFormatResult, например fnFormatResult2.

я хочу изменить вызывающую функцию в соответствии с передачей параметра плагину

Мне нужно сделать, как это

if(param == 1){
 fnFormatResult: fnFormatResult,   
}
else if(param == 1){
 fnFormatResult: fnFormatResult2,   
}

как я могу это сделать. пожалуйста, помогите ......................

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Хм, я думаю, вы можете сделать:

this.options = {
  autoSubmit: false,
  minChars: 1,
  maxHeight: 300,
  deferRequestBy: 0,
  width: 0,
  highlight: true,
  params: {}, 
  fnFormatResult: function(value, data, currentValue) {
    if(param==1) {
      return fnFormatResult.call(this, value, data, currentValue);
    } else if (param==2) {
      return fnFormatResult2.call(this, value, data, currentValue);
    }
  },      
  delimiter: null,
  zIndex: 9999
};
1 голос
/ 01 сентября 2011

Я думаю, вы можете внести некоторые изменения в функцию:

function fnFormatResult(value, data, currentValue) {
    var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
    return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
  }

Вы можете реализовать оба определения внутри этой функции.

...