Показать сообщение отдельно
  #8 (permalink)  
Старый 11.01.2015, 20:10
Аспирант
Отправить личное сообщение для Dtri Посмотреть профиль Найти все сообщения от Dtri
 
Регистрация: 14.12.2014
Сообщений: 86

Сообщение от bes Посмотреть сообщение
и зачем туда обращать внимание?
чтобы легче было разобраться, в том что я спрашивать буду ниже.

я вышел из положения объявив переменные глобально к которым присваиваю результат внутри функций. Это помогло.

оказалось return вообще не нужен.

в данном вопросе. Как оно обычно и бывает. пока писал пост уже решил проблему)))

Но спасибо за внимание.

вот как выглядит код теперь. если интересно:

var arrObj;

function autocomleteRemovedArrWatcher(id, type, url, data, arr)  {
    var varForID;

    function f( type, url, data, arr)    {
        $.ajax({
                type: type,
                url: url,
                data: sendFormAb($(data).val()),
                async: false,
                success: function (jsonVars) {
                    //jsonVars[arr] instanceof Object?alert(sendFormAb(jsonVars[arr])):{}
                    if  (jQuery.type(jsonVars[arr]) !== 'object') {
                      varForID = jsonVars[arr]
                    } else  {
                        //alert([jsonVars[arr]].join('\n'))
                        var keys = new Array();
                        for (var key in jsonVars[arr]) {
                            keys.push(key);
                        }
                        varForID = keys;
                        arrObj = jsonVars[arr];
                    }
                },
                complete: function()    {
                    $('#'+id).trigger('dropDownLoaded');
                }
        });
    }
    function f0()   {
        $('#'+id).focus();
    }
    function f1(id){
        if($('.autoCompleteInput_'+id).length==0) {
            $('<div class="autoCompleteInput autoCompleteInput_'+id+'"  style="width:'+(($('#'+id).width())*1+20*1)*1+'px;">').insertBefore('#'+id);
            $('#'+id).appendTo('.autoCompleteInput_'+id);
            $('#'+id).after('<div class="dropDownList dropDownList_'+id+'" style="width:'+$('#'+id).css('width')+';"></div>');
        }else    {
            $('.dropDownList_'+id).show();
        }
    }
    function f2(arr, id)   {
        $('.dropDown_'+id).remove();
        for (var i in arr)  {

            if  ((arr[i].indexOf($('#'+id).val())!==-1)&&(arr[i]!==''))  {
                $('.dropDownList_'+id).append('<div class="dropDown dropDown_'+id+'">'+arr[i]+'</div>');
            }
        }
    }
    function f3(id)    {
        $('.dropDown_'+id).on('mousedown', function(){
           $('#'+id).val( $(this).html()).trigger('changed');
           $('#'+id).trigger('inputDropDownClick');
        });
        $('#'+id).on('blur', function(){
            $('.dropDownList_'+id).hide();
        });
    }
    function f4(id)   {
        $('#'+id).on('inputDropDownClick', function(){
            $('.dropDownList_'+id).hide();
        });
    }
    function f5()   {
        $('#'+id).trigger('changed');
    }
    $('#'+id).on({
        click: function()   {
            f(type, url, data, arr);
        },
        dropDownLoaded: function()  {
            f1(id);
            f2(varForID, id);
            f3(id);
            f4(id);
            f0();
        },
        keyup: function()   {
            f1(id);
            f2(varForID, id);
            f3(id);
            f4(id);
            f5();
        }
    });
}



вызов функции:
autocomleteRemovedArrWatcher('service_2', 'GET', '/getFifthParams', '#serviceType_2', 'service');


$('#service_1').on('blur', function () {
alert(arrObj[$('#service_1').val()]);
});
Ответить с цитированием