powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Оптимизация кода
11 сообщений из 11, страница 1 из 1
Оптимизация кода
    #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
Оптимизация кода
    #38439761
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какова цель оптимизации?
...
Рейтинг: 0 / 0
Оптимизация кода
    #38439779
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из убожества привести в более менее приличный вид)
...
Рейтинг: 0 / 0
Оптимизация кода
    #38439793
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может для валидации какой-нибудь сторонний плагин заюзать?
...
Рейтинг: 0 / 0
Оптимизация кода
    #38439849
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нечего тут оптимизировать.
...
Рейтинг: 0 / 0
Оптимизация кода
    #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
Оптимизация кода
    #38440090
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoyподозрение на this.resetCaptcha;а что должна делать эта строка?
...
Рейтинг: 0 / 0
Оптимизация кода
    #38440104
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

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

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


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