Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите пожалуйста сократить код Jqury (https://javascript.ru/forum/jquery/71978-pomogite-pozhalujjsta-sokratit-kod-jqury.html)

sasha3611 26.12.2017 14:16

Помогите пожалуйста сократить код Jqury
 
Как можно сократить или модернизировать код подскажите пожалуйста.

$(document).ready(function () {
    var name = $('.name');
    var login = $('.login');
    var mail = $('.email');
    var pass = $('.pass');
    var pass2 = $('.pass2');
    var pattern = /^[a-z0-9_-]+@[a-z0-9-]+\.[a-z]{2,6}$/i;
    name.blur(function () {
        if(name.val() == '') {
            name.css({'border-bottom-color': 'red'});
        }
    });
    login.blur(function () {
        if(login.val() == '') {
            login.css({'border-bottom-color': 'red'});
        }
    });
    mail.blur(function () {
        if(mail.val() == '') {
            mail.css({'border-bottom-color': 'red'});
        }
    });
    name.keyup(function () {
        if(name.val().search(/^[a-zA-Zа-яА-ЯёЁ'][a-zA-Z-а-яА-ЯёЁ' ]+[a-zA-Zа-яА-ЯёЁ']?$/) == 0) {
            if(name.val().length >= 20) {
                name.css({'border-bottom-color': 'red'});   
            }else{
                $('.name_user').html(name.val());
                name.css({'border-bottom-color': 'green'});
            }
        }else{name.css({'border-bottom-color': 'red'});}
    });
    login.keyup(function () {

        if(login.val().search(/^[A-z0-9]{3,16}$/) == 0) {

            $.post("php/login_reg.php", {
                user_login: login.val()
            }, function (data) {
                if(data == 'no') {
                    alert("Логин занят !");
                    login.css({'border-bottom-color': 'red'});
                }else{
                    $('.name_login').html(login.val());
                    login.css({'border-bottom-color': 'green'});
                }
            });
        }else{login.css({'border-bottom-color': 'red'});}
    });
    mail.keyup(function () {
        mail.css({'border-bottom-color': '#D1D1D1'});
        if(mail.val().search(pattern) == 0) {
            $.post("php/mail_reg.php", {
                user_mail: mail.val()
            }, function (data) {
                if(data == 'no') {
                    alert("Mail уже существует !");
                    mail.css({'border-bottom-color': 'red'});
                }else{
                    mail.css({'border-bottom-color': 'green'});
                }
            });
        }else{
            mail.css({'border-bottom-color': 'red'});
        }
    });
    pass.blur(function () {
        if(pass.val() == '') {
            pass.css({'border-bottom-color': 'red'});
        }else{pass.css({'border-bottom-color': 'green'});}
    });
    pass2.keyup(function () {
        if(pass.val() == pass2.val()) {
            pass2.css({'border-bottom-color': 'green'});}
    });
    pass2.blur(function () {
        if(pass2.val() == '') {pass2.css({'border-bottom-color': 'red'});
        }else if(pass.val() != pass2.val()) {pass2.css({'border-bottom-color': 'red'});
        }else{pass2.css({'border-bottom-color': 'green'});}
    });
    $('.btn-reg').on('click', function () {
        if($('#checkbox').prop('checked')) {alert("Ajax соединение...");
        }else{alert("Флажок не установлен");}
    });
});

Nexus 26.12.2017 14:18

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Nexus 26.12.2017 14:31

Валидацию обязательно нужно на сервере производить.

$(function() {
    // регулярки не проверял, но похоже они какие-то кривоватые...
    $('.name,.login,.email,.pass,.pass').on('blur keyup', function() {
        var $this = $(this),
            valid = !!this.value.trim().length;

        if (!valid)
            return $this.css('border-bottom-color', 'red');

        switch (this.className) {
            case 'name':
                valid = ($this.val().search(/^[a-zA-Zа-яА-ЯёЁ'][a-zA-Z-а-яА-ЯёЁ' ]+[a-zA-Zа-яА-ЯёЁ']?$/) == 0 && $this.val().length < 20)

                break;
            case 'login':
                if (!(valid = $this.val().search(/^[A-z0-9]{3,16}$/) == 0))
                    break;

                $.post("php/login_reg.php", {
                    user_login: $this.val()
                }, function(data) {
                    valid = data != 'no';

                    if (!valid)
                        alert("Логин занят !");
                    else
                        $('.name_login').html($this.val());

                    login.css('border-bottom-color', valid ? 'green' : 'red');
                });

                break;

                /* и т.п. */
        };

        $this.css('border-bottom-color', valid ? 'green' : 'red');
    });

    $('.btn-reg').on('click', function() {
        if ($('#checkbox').prop('checked')) {
            alert("Ajax соединение...");
        } else {
            alert("Флажок не установлен");
        }
    });
});


Часовой пояс GMT +3, время: 08:45.