2011-02-11 5 views
0

J'ai jQuery et la configuration du plugin autocomplete. Autocomplete fonctionne bien et diverses options que je définis comme la largeur et la recherche fonctionne bien. Mais la seule chose qui ne marche pas est l'option matchContains. Selon the doc "Si la comparaison regarde à l'intérieur (c'est-à-dire que" ba "correspond à" foo-bar ") les résultats de la recherche.Important seulement si vous utilisez la mise en cache Ne pas mélanger avec autofill." Mais il ne regarde pas à l'intérieur des résultats de recherche. Par exemple, "ba" ne trouvera pas "foo bar".jQuery autocomplete: matchContains ne fonctionne pas

<script type="text/javascript" src="styles/prosilver/template/jquery.js"></script> 
<script type="text/javascript" src="styles/prosilver/template/jquery.autocomplete.js"></script> 


<script type="text/javascript"> 
// <![CDATA[ 

/* Zeno */ 
function translatestyle(text) 
{ 
    var val = document.getElementById('query').value; 
    var lang = '{S_USER_LANG}'.substring(0,2); 
    var list = "{TRANS_LIST}"; 
    var arr = list.match(val); 
    if (arr == null) 
    { 
     alert('That is not a valid translation term.'); 
    } 
    else 
    { 
     insert_text('[translate='+lang+']'+val+'[/translate]'); 
     document.forms[form_name].elements[text_name].focus(); 
    } 
} 


    var a2; 

    jQuery(function() { 

    var onAutocompleteSelect = function(value, data) { 
     $('#selection').html('<img src="\/global\/flags\/small\/' + data + '.png" alt="" \/> ' + value); 
     alert(data); 
    } 

    var options = { 
     serviceUrl: '/projects/autocomplete/service/autocomplete.ashx', 
     matchContains: true, 
     width: 300, 
     delimiter: /(,|;)\s*/, 
     onSelect: onAutocompleteSelect, 
     deferRequestBy: 0, //miliseconds 
    }; 

    a2 = $('#query').autocomplete({ 
     matchContains: true, 
     width: 300, 
     delimiter: /(,|;)\s*/, 
     lookup: "{TRANS_LIST}".split(',') 
    }); 


    $('#navigation a').each(function() { 
     $(this).click(function(e) { 
     var element = $(this).attr('href'); 
     $('html').animate({ scrollTop: $(element).offset().top }, 300, null, function() { document.location = element; }); 
     e.preventDefault(); 
     }); 
    }); 

    }); 

Répondre

1

Je ne suis pas familier avec ce plugin particulier, mais vous pouvez essayer de passer à la bibliothèque JQuery UI Autocomplete. C'est assez bon, et recherche à l'intérieur de la façon dont vous voulez.

0

Exemple:

source: function (request, response) { // Contains 
    var searchString = request.term, 
     items = []; 

    // OPTIONS 
    // Search for items with "searchString"... 
    // Example: 
    items.push('test 1'); 
    items.push('foo'); 
    items.push('var'); 

    response(items); // Items 
} 
Questions connexes