0 / 0 / 1
Регистрация: 19.05.2015
Сообщений: 46
1

Как можно упростить javascript проверку на валидность?

25.09.2018, 13:28. Показов 469. Ответов 1
Метки нет (Все метки)

Я новичок в javascript, и у меня есть вопрос. У меня есть код с проверкой на валидность заполнение регистрационной формы. Я думал как ее можно упростить и пришел к выводу, что нужно создать отдельный метод и туда передавать нужные мне параметры, но столкнулся с проблемой, что не знаю с какого места их лучше передавать. Как это сделать лучше и правильно?

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
var namePattern = new RegExp("^([A-z]{4,20})$");
var emailPattern = new RegExp("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,5})$");
var passwordPattern = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,20}$");
 
document.getElementById("registration_form").addEventListener("submit", function(event) {
  var fName = document.getElementById("fName").value;
  var lName = document.getElementById("lName").value;
  var email = document.getElementById("email").value;
  var password = document.getElementById("pass").value;
  var confirmPassword = document.getElementById("confPass").value;
    document.getElementById("error_first_name").innerHTML = '';
    document.getElementById("error_last_name").innerHTML = '';
    document.getElementById("error_email").innerHTML = '';
    document.getElementById("error_password").innerHTML = '';
    document.getElementById("error_confirmPassword").innerHTML = '';
 
  if (!namePattern.test(fName)) {
    document.getElementById("error_first_name").innerHTML = 'Wrong first name! range: [4-20] and not contain numbers';
    event.preventDefault();
  } if (!namePattern.test(lName)) {
    document.getElementById("error_last_name").innerHTML = 'Wrong last name! range: [4-20] and not contain numbers';
    event.preventDefault();
  } if(!emailPattern.test(email)){
    document.getElementById("error_email").innerHTML = 'Wrong email! Your email should contains this symbols: [-_A-z0-9]';
    event.preventDefault();
  } if(!passwordPattern.test(password)){
    document.getElementById("error_password").innerHTML = 'Wrong password! range: [8-20], minimum one upper case letter: [A] and minimum one figure';
    event.preventDefault();
  } if(confirmPassword != password){
    document.getElementById("error_confirmPassword").innerHTML = 'Your passwords do not match';
    event.preventDefault();
  }
})
Моя форма:

HTML5
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
<form action="" id="registration_form">
                    <ul>
                        <div id="error_first_name" style="color: #ff0000"></div>
                        <li class="text-info">First Name: </li>
                        <li><input type="text" id="fName" placeholder="Your first name" value=""></li>
                    </ul>
                    <ul>
                        <div id="error_last_name" style="color: #ff0000"></div>
                        <li class="text-info">Last Name: </li>
                        <li><input type="text" id="lName" placeholder="Your last name" value=""></li>
                    </ul>
                    <ul>
                        <div id="error_email" style="color: #ff0000"></div>
                        <li class="text-info">Email: </li>
                        <li><input type="text" id="email" placeholder="Your email" value=""></li>
                    </ul>
                    <ul>
                        <div id="error_password" style="color: #ff0000"></div>
                        <li class="text-info">Password: </li>
                        <li><input type="password" id="pass" placeholder="Your password" value=""></li>
                    </ul>
                    <ul>
                        <div id="error_confirmPassword" style="color: #ff0000"></div>
                        <li class="text-info">Re-enter Password:</li>
                        <li><input type="password" id="confPass" placeholder="Confirm your password" value=""></li>
                    </ul>
 
                    <input type="submit" id="submit" value="Register Now">
                    <p class="click">By clicking this button, you agree to my modern style <a>Policy Terms and Conditions</a> to Use</p>
                </form>
Я пытаюсь уменьшить свой код, для этого я создал функцию, в которой передаю все параметры, которые мне нужны, но что я не делаю правильно. Теперь это выглядит так.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
var namePattern = new RegExp("^([A-z]{4,20})$");
var emailPattern = new RegExp("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,5})$");
var passwordPattern = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,20}$");
 
document.getElementById("registration_form").addEventListener("submit", function(event){
function getParam(value, pattern, error_value, error_message){
    error_value.innerHTML = '';
    if(!pattern.test(value)){
        error_value.innerHTML = error_message;
        event.preventDefault();
    }
}
})
Но то, что я делаю, неверно, как я могу улучшить его и правильно передать мои параметры? Нужно ли передавать их с помощью html или как лучше будет это реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2018, 13:28
Ответы с готовыми решениями:

Как можно сделать чекер почты на валидность?
Здравствуйте! Задачка такая. Есть у меня в окне всего 2 texbox и 1 кнопка. В первый textbox я...

Как можно обойти проверку CRC или как можно распаковать поврежденный архив?
Есть старый архив. Но при попытке достать из него файл выдается сообщение о несовпадении CRC. Как...

JavaScript! Как сделать проверку(фильтр) логинов исп. рег.выражения?
логин должен быть: ни менее 3-х символов, начинаться только с буквы (а не с цифры) не содержать...

Как можно упростить?
Как можно упростить #include &lt;stdio.h&gt; #include&lt;stdlib.h&gt; int main () { int a = -1; ...

1
Эксперт JS
6445 / 3892 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
25.09.2018, 14:37 2
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
    <script>
        document.addEventListener("DOMContentLoaded", function () {
            document.getElementById("registration_form").onsubmit = validate_form;
        });
 
        function validate_form() {
            var valid = true,
                element;
            var array = [
                { id1: "fName", pattern: /^([a-z]{4,20})$/i, id2: "error_first_name", text: "Wrong first name! range: [4-20] and not contain numbers" },
                { id1: "lName", pattern: /^([a-z]{4,20})$/i, id2: "error_last_name", text: "Wrong last name! range: [4-20] and not contain numbers" },
                { id1: "email", pattern: /^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,5})$/, id2: "error_email", text: "Wrong email! Your email should contains this symbols: [-_A-z0-9]" },
                { id1: "pass", pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$/, id2: "error_password", text: "Wrong password! range: [8-20], minimum one upper case letter: [A] and minimum one figure" },
            ];
 
            array.forEach(function (e) {
                if ((element = document.getElementById(e.id1))) {
                    if (element.value.match(e.pattern)) {
                        document.getElementById(e.id2).innerHTML = "";
                    }
                    else {
                        document.getElementById(e.id2).innerHTML = e.text;
                        valid = false;
                    }
                }
            });
 
            element = document.getElementById("confPass");
            if (element.value === document.getElementById("pass").value) {
                document.getElementById("error_confirmPassword").innerHTML = "";
            }
            else {
                document.getElementById("error_confirmPassword").innerHTML = "Your passwords do not match";
                valid = false;
            }
 
            return valid;
        }
    </script>
Регулярки особо не проверял. Для имён поставил только ключ i.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2018, 14:37
Помогаю со студенческими работами здесь

Как можно вставить проверку?
Всем привет! Как можно вставить в этот код, проверку на почты на существование? Т.е проверить через...

Как можно упростить условие?
if ((student.exam == 3 &amp;&amp; sum == 14) || (student.exam == 4 &amp;&amp; sum / 4 == 19) || (student.exam == 5...

Как можно упростить код?
javascript изучаю недавно, написал небольшой код, но я думаю его можно сделать проще на много, но...

как можно упростить код?
как можно упростить код? есть несколко label по ним двигается слово по 1 букве на label и при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru