Многоразовая функция автозаполнения JQuery - PullRequest
0 голосов
/ 30 ноября 2011

Привет, друзья-друзья,

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

Где / как добавить:

.data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
                .data( "item.autocomplete", item )
                .append( "<a>" + item.value + " | " + item.desc + "</a>" )
                .appendTo( ul );
};

К этому коду:

function Autocomplete(numberLocation,nameLocation,dscLocation,chargeLocation) {
    $(numberLocation).autocomplete ({
        minLength: 4, 
        source: function(request, response){             
            var fundnum = $(numberLocation).val(); 
            fundnum = escape(fundnum); 
            var querystring = "?term=" + fundnum; 
            if (typeof (window.sortorder)=='undefined'){
                querystring = querystring + '&sortorder=0'
            } else {
                querystring = querystring + '&sortorder=' + window.sortorder;                
            }
            $.ajax({
                url:      'ajax/fundid-autocomplete.php'+querystring,
                beforeSend: function(){},
                async:    true,
                dataType: "json",
                success: response
            });
        },
        focus: function ( event,ui ){     
            $(numberLocation).val( ui.item.value );
            return false;            
        },
        select: function( event, ui ) {          
                $(numberLocation).val( ui.item.value );
                $(nameLocation).html( ui.item.desc );                     
                    if(ui.item.dsc >0) {
                        chargeLocation.hide();                    
                        dscLocation.show();                          
                        dscLocation.html('DSC Charge: '+ui.item.dsc+' %');
                    } else {
                        dscLocation.html('');                    
                        chargeLocation.show();                       
                    }  
                    $('#numberlabel').html('Fund #*');
                return false;
        }        
    });          
} 

Как правильно сохранить его, чтобы он работал с несколькими входами, пожалуйста?Спасибо!

Дополнительная информация: Я реализую потрясающий код, упомянутый по адресу: Часть 1 и от Эндрю Уитакера здесь .

Я использую это, чтобы сделать его общим, так как мое автозаполнение будет повторяться по крайней мере на четырех полях.

Если я пытаюсь добавить его в функцию, он предупреждает меня о синтаксической ошибке в IDE Netbeans.

1 Ответ

3 голосов
/ 01 декабря 2011

Вы должны быть в состоянии добавить его в конец autocomplete вызова:

function Autocomplete(numberLocation,nameLocation,dscLocation,chargeLocation) {
    $(fundNumberField).autocomplete ({
        minLength: 4, 
        source: function(request, response){             
            var fundnum = $('#str-misc-FundNumber1').val(); 
            fundnum = escape(fundnum); 
            var querystring = "?term=" + fundnum; 
            if (typeof (window.sortorder)=='undefined'){
                querystring = querystring + '&sortorder=0';
            } else {
                querystring = querystring + '&sortorder=' + window.sortorder;                
            }
            $.ajax({
                url:      'ajax/fundid-autocomplete.php'+querystring,
                beforeSend: function(){},
                async:    true,
                dataType: "json",
                success: response
            });
        },
        focus: function ( event,ui ){     
            $(numberLocation).val( ui.item.value );
            return false;            
        },
        select: function( event, ui ) {          
                $(numberLocation).val( ui.item.value );
                $(nameLocation).html( ui.item.desc );                     
                    if(ui.item.dsc >0) {
                        chargeLocation.hide();                    
                        dscLocation.show();                          
                        dscLocation.html('DSC Charge: '+ui.item.dsc+' %');
                    } else {
                        dscLocation.html('');                    
                        chargeLocation.show();                       
                    }  
                    $('#numberlabel').html('Fund #*');
                return false;
        }        
    }).data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
                .data( "item.autocomplete", item )
                .append( "<a>" + item.value + " | " + item.desc + "</a>" )
                .appendTo( ul );
    };         
}

Когда я запускаю этот код через JSLint, у меня действительно не возникает проблем (я добавил пропущенную точку с запятой внутри функции source). Единственное, чего не хватает, это определения fundNumberField (я предполагаю, что оно определено в другом месте).

...