Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Валидация формы (https://javascript.ru/forum/dom-window/75400-validaciya-formy.html)

LocoThatCould 05.10.2018 11:54

Валидация формы
 
[JS]function validate() {
var userEmail = document.getElementById("username");
var userPas = document.getElementById("pas");

var regexp = new RegExp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$");


if(userEmail.value != regexp) {
userEmail.style.border = "2px solid red";
return false;
}

if(userPas.value = "") {
userPas.style.border = "2px solid red";
return false;
}


return true;

}[JS]

Nexus 05.10.2018 12:29

regexp.test(userEmail.value)

[/JS]

LocoThatCould 05.10.2018 13:22

Переделал, но не работает
function validate() {

		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var regP = /(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z!@#$%^&*]{6,}/g;
		var emm = $('#username').val();
		var pass = $('#pas').val();

		if(reg.test(emm)){
			return true;
		}
		else{
			$('#username').css('border','2px solid red');
			return false;
		}

		if(regP.test(pass)){
			return true;
		}
		else{
			$('#pas').css('border','2px solid red');
			return false;
		}
	}

Nexus 05.10.2018 13:34

LocoThatCould, что значит "не работает"?
Не работает и не делает то, что вам нужно - разные вещи.

В вашем коде валидация пароля никогда не будет произведена.

Dilettante_Pro 05.10.2018 13:36

<input type='text' id = 'username'>
<button>Тест</button>
<script>
var userEmail = document.getElementById("username");
var regexp = new RegExp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$");

document.querySelector('button').onclick = function() {
   if(!regexp.test(userEmail.value)) {
       userEmail.style.border = "2px solid red";
   } else {
       userEmail.style.border = "2px solid green";
   }
}
</script>

LocoThatCould 05.10.2018 13:56

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

LocoThatCould 05.10.2018 13:56

Код работает не корректно.

LocoThatCould 05.10.2018 14:21

Email заработал, еще вопрос в событии формы ONSUBMIT обязательно вписывать return для функции? можно об этом тему или инфу?

LocoThatCould 05.10.2018 14:23

function validate() {

		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var regP = /^[a-zA-Z]$/;;
		var emm = $('#username').val();
		var pass = $('#pas').val();

		if(reg.test(emm)){
			return true;
		}
		else{
			$('#username').css('border','2px solid red');
			return false;
		}

		if(regP.test(pass)){
			alert("Пароль должен содержать минимум 1 цифру,заглавную букву и 1 спец. символ!");
			return false;
		}
		else{
			$('#pas').css('border','2px solid red');
			return false;
		}
	}

Nexus 05.10.2018 14:28

<input type='text' id = 'username'>
<input type='text' id = 'pas'>
<button>Тест</button>
<script>
document.querySelector('button').onclick = validate;

function validate() {
    const expressions = {
        email: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
        password: /(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z!@#$%^&*]{6,}/g
    };


    return !['username', 'pas'].filter((id, i) => {
        const node = document.getElementById(id);
        const isValid = (node.value.length && expressions[!i ? 'email' : 'password'].test(node.value));

        node.style.borderColor = isValid ? 'green' : 'red';


        return !isValid;
    }).length;
}
</script>


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