Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Оптимизация кода / 11 сообщений из 11, страница 1 из 1
24.10.2013, 13:08
    #38439759
hemoy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Есть код :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
/* 
 * Валидация и отправка на почту
 */
$(document).ready(function()
{
    var Ajax_validation = function() {
    };
    Ajax_validation.prototype = {
        elements: 0,
        flag: false,
        has: 0,
        url: 'multimedia_send.php',
        validationAjax: function(name_attr) {

// формируем массив для отправки на сервер, нас интересуют значение поля и css-классы
//на сервере массив будет доступен в виде $_POST['validation']['name']['value'] и т.п. 
            var name = $(name_attr).attr('name');
            var data = {};
            data['validation[' + name + '][value]'] = $(name_attr).val();
            data['validation[' + name + '][class]'] = $(name_attr).attr('class');
            // делаем ajax-запрос методом POST на текущий адрес, в ответ ждем данные HTML
            $.ajax({
                type: 'POST',
                url: this.url,
                dataType: 'html',
                data: data,
                // до выполнения запроса удаляем блок с предыдущими сообщениями
                beforeSend: function()
                {
                    $('#row-' + name + ' div.msg').remove();
                },
                // в случае удачного выполнения добавляем блок с сообщением
                success: function(msg)
                {
                    $('#row-' + name).append(msg);
                }
            });
            // проверяем, все ли поля прошли валидацию (признак - css-класс "ok" у блока сообщения) и разблокируем кнопку отправки на сервер

        },
        sendAjax: function(name_attr) {
            //отменяем стандартное действие при отправке формы

            var m_data = name_attr.serialize();
            $.ajax({
                type: 'POST',
                url: this.url,
                dataType: 'JSON',
                data: m_data,
                beforeSend: function()
                {
                    this.elements = $('.validation').length;
                    this.has = $('.row:has(div.ok)').length;
                    jQuery('.content-menu__link__active').html("");
                    $('#captcha_img').attr('src', 'captcha.php?regen=regen&rnd=' + Math.random());

                    this.elements = $('.validation').length
                    this.has = $('.row:has(div.ok)').length;

                    if (this.has == this.elements) {
                    } else
                    {
                        $('.captcha').val('').change();
                        $('#captcha_img').attr('src', 'captcha.php?regen=regen&rnd=' + Math.random());
                        jQuery('.content-menu__link__active').html("Не все поля заполнены");
                        return false;
                    }

                },
                success: function(data, code) {
                    if (data == 1) {
                        $('.captcha').val('').change();
                        jQuery('.popup, .popup-mat').hide();
                        jQuery('.content-menu__link__active').html("");
                        $('.multimedia-form').trigger('reset');
                        $('.row div').remove();


                    } else {
                        $('#captcha_img').attr('src', 'captcha.php?regen=regen&rnd=' + Math.random());
                        $('.captcha').val('').change();
                        jQuery('.content-menu__link__active').html("Ошибка отправки");
                    }



                }
            });
        }
    };

    var objAjax = new Ajax_validation();


// блокируем кнопку отправки до того момента, пока все поля не будут проверены
    // $('.submit').attr('disabled', 'disabled');
    // elements содержит количество элементов для валидации
    // has содержит количество элементов успешно прощедших валидацию
    // при изменении значения поля
    $('.validation').change(function() {
        objAjax.validationAjax($(this));
    });
    $('.multimedia-form').submit(function(e) {
        e.preventDefault();
        objAjax.sendAjax($(this));
    });

//Клик на сменить картинку (captcha)
    $('.multimedia-form__link-test').click(function() {
        $('#captcha_img').attr('src', '/captcha.php?regen=regen&rnd=' + Math.random());
        $('.captcha').val('').change();
        return false;
    });

    jQuery("#multimedia-form").click(function() {
        // $('.captcha').val('').change();
        jQuery('.content-menu__link__active').html("");
        $('.multimedia-form').trigger('reset');
        $('.row div').remove();
        $('#captcha_img').attr('src', '/?regen=regen&rnd=' + Math.random());
        return false;
    });

    jQuery("#multimedia-form").click(function() {
        $('body,html').animate({scrollTop: 0}, 0);

    });



});



Как его можно оптимизировать в ооп
...
Рейтинг: 0 / 0
24.10.2013, 13:08
    #38439761
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
какова цель оптимизации?
...
Рейтинг: 0 / 0
24.10.2013, 13:15
    #38439779
hemoy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
из убожества привести в более менее приличный вид)
...
Рейтинг: 0 / 0
24.10.2013, 13:19
    #38439793
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
может для валидации какой-нибудь сторонний плагин заюзать?
...
Рейтинг: 0 / 0
24.10.2013, 13:50
    #38439849
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Нечего тут оптимизировать.
...
Рейтинг: 0 / 0
24.10.2013, 15:31
    #38440069
hemoy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
/* 
 * Валидация и отправка на почту
 */
$(document).ready(function()
{
    var Ajax_validation = function() {};
    Ajax_validation.prototype = {
        elements: 0,
        has: 0,
        url: '/sites/all/modules/er/er_multimedia/er_multimedia_send.php',
        validationAjax: function(name_attr) {

// формируем массив для отправки на сервер, нас интересуют значение поля и css-классы
//на сервере массив будет доступен в виде $_POST['validation']['name']['value'] и т.п. 
            var name = $(name_attr).attr('name');
            var data = {};
            data['validation[' + name + '][value]'] = $(name_attr).val();
            data['validation[' + name + '][class]'] = $(name_attr).attr('class');
            // делаем ajax-запрос методом POST на текущий адрес, в ответ ждем данные HTML
            $.ajax({
                type: 'POST',
                url: this.url,
                dataType: 'html',
                data: data,
                // до выполнения запроса удаляем блок с предыдущими сообщениями
                beforeSend: function()
                {
                    $('#row-' + name + ' div.msg').remove();
                },
                // в случае удачного выполнения добавляем блок с сообщением
                success: function(msg)
                {
                    $('#row-' + name).append(msg);
                }
            });
            // проверяем, все ли поля прошли валидацию (признак - css-класс "ok" у блока сообщения) и разблокируем кнопку отправки на сервер
        },
        resetCaptcha: function() {
            $('#captcha_img').attr('src', '/sites/all/modules/er/er_multimedia/captcha.php?regen=regen&rnd=' + Math.random());
        },
        sendAjax: function(name_attr) {
            //отменяем стандартное действие при отправке формы

            var m_data = name_attr.serialize();
            $.ajax({
                type: 'POST',
                url: this.url,
                dataType: 'JSON',
                data: m_data,
                beforeSend: function()
                {
                    this.elements = $('.validation').length;
                    this.has = $('.row:has(div.ok)').length;
                    jQuery('.content-menu__link__active').html("");
                    this.resetCaptcha;
                    this.elements = $('.validation').length;
                    this.has = $('.row:has(div.ok)').length;
                    if (this.has == this.elements) {
                    } else
                    {
                    /*    $('.captcha').val('').change();
                        this.resetCaptcha;*/
                        jQuery('.content-menu__link__active').html("Не все поля заполнены");
                        return false;
                    }

                },
                success: function(data, code) {
                    if (data == 1) {
                        $('.captcha').val('').change();
                        jQuery('.popup, .popup-mat').hide();
                        jQuery('.content-menu__link__active').html("");
                        $('.multimedia-form').trigger('reset');
                        $('.row div').remove();
                    } else {
                        this.resetCaptcha;
                        $('.captcha').val('').change();
                        jQuery('.content-menu__link__active').html("Ошибка отправки");
                    }
                }
            });
        }
    };

    var objAjax = new Ajax_validation();

// блокируем кнопку отправки до того момента, пока все поля не будут проверены
    // $('.submit').attr('disabled', 'disabled');
    // elements содержит количество элементов для валидации
    // has содержит количество элементов успешно прощедших валидацию
    // при изменении значения поля
    $('.validation').change(function() {
        objAjax.validationAjax($(this));
    });
    $('.multimedia-form').submit(function(e) {
        e.preventDefault();
        objAjax.sendAjax($(this));
    });

//Клик на сменить картинку (captcha)
    $('.multimedia-form__link-test').click(function() {
        objAjax.resetCaptcha();
        $('.captcha').val('').change();
        return false;
    });

    jQuery("#multimedia-form").click(function() {
        // $('.captcha').val('').change();
        jQuery('.content-menu__link__active').html("");
        $('.multimedia-form').trigger('reset');
        $('.row div').remove();
        objAjax.resetCaptcha();
        return false;
    });

    jQuery("#multimedia-form").click(function() {
        $('body,html').animate({scrollTop: 0}, 0);
    });
});



подозрение на this.resetCaptcha;
...
Рейтинг: 0 / 0
24.10.2013, 15:41
    #38440090
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
hemoyподозрение на this.resetCaptcha;а что должна делать эта строка?
...
Рейтинг: 0 / 0
24.10.2013, 15:45
    #38440104
hemoy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Паганель,

каптчу перегенирировать
...
Рейтинг: 0 / 0
24.10.2013, 15:49
    #38440115
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function f() {
    alert('f');
}

f();
f;
f();
...
Рейтинг: 0 / 0
24.10.2013, 17:36
    #38440294
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
hemoyКак его можно оптимизировать в оопА Вы с принципами ООП не знакомы, кака я понимаю?
...
Рейтинг: 0 / 0
25.10.2013, 07:33
    #38440663
hemoy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
skyANA, C:@
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Оптимизация кода / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]