Валидация формы
[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] |
regexp.test(userEmail.value) [/JS] |
Переделал, но не работает
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;
}
}
|
LocoThatCould, что значит "не работает"?
Не работает и не делает то, что вам нужно - разные вещи. В вашем коде валидация пароля никогда не будет произведена. |
<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>
|
Вообщем нужно чтобы проводилась проверка корректности ввода email, через регулярное выражение, так же с паролем.. Почему пароль никогда не проверится?
|
Код работает не корректно.
|
Email заработал, еще вопрос в событии формы ONSUBMIT обязательно вписывать return для функции? можно об этом тему или инфу?
|
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;
}
}
|
<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>
|
LocoThatCould,
Цитата:
|
Работает но ничего не понятно, я с формой делал.
Это node js?
|
Цитата:
Код, который я представил написан на обычном js. Использовал методы массива и стрелочные функции. ps. Еще тернарный оператор. |
Без стрелочек и пр.
Email<input type='text' id = 'username'>
Password<input type='text' id = 'pass'>
<button>Тест</button>
<div id='result'></div>
<script>
var userEmail = document.getElementById("username"),
userPass = document.getElementById("pass");
var regexp = new RegExp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$");
var regexpP = new RegExp("^[a-zA-Z0-9!@#$%^&*]{6,16}$");
document.querySelector('button').onclick = function() {
result.textContent = validate();
}
function validate() {
var resultE = false, resultP = false;
if(!regexp.test(userEmail.value)) {
userEmail.style.border = "2px solid red";
} else {
userEmail.style.border = "2px solid green";
resultE = true;
}
if(!regexpP.test(userPass.value)) {
userPass.style.border = "2px solid red";
} else {
userPass.style.border = "2px solid green";
resultP = true;
}
return resultP && resultE;
}
</script>
|
19-ю строку из кода Dilettante_Pro можно удалить.
|
Цитата:
Нужно два отдельных и результирующий по and (изменил пример) Кстати, по регексу, использованному в вашем примере, мне не удается ввести корректный пароль |
Пароль в коде без стрелок не чекается..
|
Цитата:
А вот по примеру со стрелочками мне не удалось ввести корректный пароль |
Stop пропускает
Ввожу 2 символа в пароль в код из 14 поста и пропускает..
|
Прошу прощения, моя вина все работает.. добавил s в инпут пароля...
|
Dilettante_Pro,
Не подскажите как лучше сделать? Можно ли сместить Алерт? А то совсем не видно форму.. Еще заметил что при отсутствии логина и вводе корректного пароля, пароль, не подсвечивается зеленым... |
Цитата:
Цитата:
|
Переделал, все гуд
Все намана)
document.querySelector('button').onclick = function() {
result.textContent = validate();
}
Что делает эта строка? |
Цитата:
Результат выполнения функции записывается в <div id='result'></div> |
А мне нужно место блока вписать id формы?
А мне нужно место блока вписать id формы?
|
Как вы выводите в result без выборки?
|
LocoThatCould,
Цитата:
|
Я все не успакоюсь))
Крч при введении правильного пароля(по регулярке) и пустого email'a(или неправильного) происходит переадресация или перезагрузка и форма обновляется... т.к когда переходишь назад, то видно правильную работу скрипта:yes:
|
LocoThatCould, повешайте на форму обработчик события submit, если форма валидацию не прошла, то действие по умолчанию отменяйте(event.preventDefault()).
|
if(result = false) {
fr.event.preventDefault()
}
Верно? |
fr - это id формы..
|
Вставил после return result; в функции validate
|
if(!validate()) {
fr.preventDefault();
}
? |
Форма
<form id="fr" onsubmit="validate();"> |
Крч нашаманил, сам немогу понять как это работает но.. убрал result в
result = true; Хз, вот думаю как.. возвращается 2 result получается и происходит путанница? ДА поидее так.. остается 1 тру в email и 2 false.. крч я думаю лучше сделать 2 функции проверки чтобы два результата было и добавить проверку этих результатов.. Я верно думаю? |
var userEmail = document.getElementById("username"),
userPass = document.getElementById("pass")
var regexp = new RegExp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$");
var regexpP = new RegExp("^[a-zA-Z0-9!@#$%^&*]{6,16}$");
function validate() {
var result = false;
if(!regexp.test(userEmail.value)) {
userEmail.style.border = "2px solid red";
result = false;
alert('Некорректно введен Email!')
} else {
userEmail.style.border = "2px solid green";
result = true;
}
if(!regexpP.test(userPass.value)) {
userPass.style.border = "2px solid red";
result = false;
alert('Некорректно введен Пароль!')
} else {
userPass.style.border = "2px solid green";
}
return result;
}
|
document.querySelector('#fr').addEventListener('submit',function(e){
if(!validate())
e.preventDefault();
});
|
не робит)) можете фул версию со всем скриптом скинуть, а то мб я не туда поставил)
|
LocoThatCould,
<form id="fr">
<input type="text" id="username" />
<input type="password" id="pass" />
<input type="submit" />
</form>
<script>
document.querySelector('#fr').addEventListener('submit', function(e) {
if (!validate())
e.preventDefault();
});
var userEmail = document.getElementById("username"),
userPass = document.getElementById("pass"),
regexp = new RegExp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$"),
regexpP = new RegExp("^[a-zA-Z0-9!@#$%^&*]{6,16}$");
function validate() {
var result = regexp.test(userEmail.value);
if (!result) {
userEmail.style.border = "2px solid red";
alert('Некорректно введен Email!');
} else
userEmail.style.border = "2px solid green";
if (!regexpP.test(userPass.value)) {
result = false;
userPass.style.border = "2px solid red";
alert('Некорректно введен Пароль!')
} else
userPass.style.border = "2px solid green";
return result;
}
</script>
|
| Часовой пояс GMT +3, время: 18:06. |