Вход Регистрация
Файл: templates/default/js/fields/string_input.js
Строк: 138
<?php
function initAutocomplete (fieldmultipleurldataseparator){

    
separator separator || ', ';

    var 
cache = {};
    var 
min_length data 2;

    var 
term_template "<b class='ui-autocomplete-term'>$1</b>";

    var 
loadSource = function (termresponse){
        if(
data){
            return 
loadData(termresponse);
        } else {
            return 
loadJson(termresponse);
        }
    };
    var 
loadData = function (termresponse){
        var 
matcher = new RegExp"^" + $.ui.autocomplete.escapeRegex(term), "i" );
        
response( $.grep(data, function( item ){
            return 
matcher.test(item);
        }));
    };
    var 
loadJson = function (termresponse){
        $.
getJSON(url, {
            
termterm
        
}, function(rstatusxhr) {
            
cache[term] = r;
            
response(r);
        });
    };

    var 
getTerm = function (request_term){
        return 
request_term.substring(0getCaretPosition('#'+field)).split(separator).pop().trim();
    };

    var 
highlightTerm = function (e,ui) {
        var 
autocomplete = $(this).data('ui-autocomplete');
        
autocomplete.menu.element.find('li').each(function() {
            var 
me = $(this).find('div');
            if(
me.length === 0){ me = $(this); }
            var 
keywords autocomplete.term.split(' ').join('|');
            
me.html(me.text().replace(new RegExp("(" keywords ")""gi"), term_template));
        });
    };

    if(
multiple){
        $(
'#'+field).bind('keydown', function( event ) {
            if ( 
event.keyCode === $.ui.keyCode.TAB &&
                $(
this).data('ui-autocomplete').menu.active ) {
                
event.preventDefault();
            }
        }).
autocomplete({
            
minLengthmin_length,
            
source: function(requestresponse) {
                var 
term getTerm(request.term);
                if (
term.length min_length) {
                    return 
false;
                }
                if (
term in cache) {
                    
response(cache[term]);
                    return;
                }
                
loadSource(termresponse);
            },
            
focus: function() {
                return 
false;
            },
            
select: function( eventui ) {
                var 
value = $(this).val();
                var 
terms = [];
                var 
new_string '';
                var 
is_last true;
                var 
position 0;
                if(
value.length 0){

                    
terms value.split(separator);

                    var 
position_terms value.substring(0getCaretPosition('#'+field)).split(separator);

                    var 
terms_count terms.length;
                    var 
position_terms_count position_terms.length;

                    if(
position_terms_count !== terms_count){
                        
is_last false;
                    }

                    if(
terms_count === 1){
                        
position ui.item.value.length;
                    } else {
                        
position_terms.pop();
                        
position_terms.push(ui.item.value);
                        
position position_terms.join(separator).length;
                    }

                    
terms[position_terms_count-1] = ui.item.value;

                } else {
                    
terms = [ui.item.value];
                    
position ui.item.value.length;
                }
                
new_string terms.join(separator);
                if(
is_last){
                    
new_string new_string+separator;
                    
position += separator.length;
                }
                $(
this).val(new_string);
                
setCaretPosition('#'+fieldposition);
                
icms.events.run('autocomplete_select'ui);
                return 
false;
            },
            
openhighlightTerm
        
});
    } else {
        $(
'#'+field).autocomplete({
            
minLengthmin_length,
            
delay500,
            
source: function( requestresponse ) {
                var 
term request.term;
                if ( 
term in cache ) {
                    
responsecacheterm ] );
                    return;
                }
                
loadSource(termresponse);
            },
            
select: function( eventui ) {
                
icms.events.run('autocomplete_select'ui);
            },
            
openhighlightTerm
        
});
    }
}
?>
Онлайн: 2
Реклама