#javascript #html #jquery #forms #validation
#javascript #HTML #jquery #формы #проверка
Вопрос:
Я пытаюсь проверить ввод текста в моем html. Мне нужны только алфавиты и пробелы. Вначале проверка работала, но теперь это не так, и я, похоже, не могу найти проблему. Он по-прежнему отправляет форму с недопустимым полем. Пожалуйста, посмотрите код ниже
index.html
<div class="full-form">
<form class=form-info action="cv.html" onsubmit="return handlesubmit()" >
<div class="f-header">
SIGN UP
</div>
<div class="bdetails">
<label for="fname">First Name</label><br>
<input type="text" name="fname" id="f_name" placeholder="First Name" onfocus="checkFName()" onblur="BlurFName()" required><br>
<p class="error_message" id="First_em">Name must contain only alphabets(A-Z)</p>
</div>
<script type="text/javascript" src="test.js"></script>
</form>
test.js
function checkData(){
if(BlurFName()){
}
return false;
}
function handlesubmit(){
checkData();
passvalue();
}
/*
Функция проверки, является ли введенное имя действительным при фокусировке ввода
*/
function checkFName(){
let name_len=/^[A-Za-z] $/;
let fname= document.getElementById("f_name");
if(!fname.value.match(name_len)){
document.getElementById("First_em").style.display = "inline";
return true;
}
};
/*
Функция проверки правильности введенного имени при размытом вводе
*/
function BlurFName(){
let name_len=/^[A-Za-z] $/;
let fname= document.getElementById("f_name");
if(fname.value.match(name_len)){
document.getElementById("First_em").style.display = "none";
return false;
}
};
Комментарии:
1. handlesubmit ничего не возвращает…..
2. @epascarello хорошо. Я изменил функцию handlesubmit(), и на этот раз она не отправляется, но после исправления неверного ввода она все равно не проходит
3. Где возвращаемое значение true / false?
function handlesubmit(){ let isValid = true; return isValid; }
4. @epascarelloI Я пробовал это, но после действительного ввода он не отправляется
5. чем вы не возвращаете true, если оно действительно
Ответ №1:
С помощью функции handlesubmit вам нужно вернуть false или true.
Я предлагаю использовать
e.preventDefault();
для упрощения обработки отправки формы
Комментарии:
1. Спасибо, я пробовал это, но это не отправка
Ответ №2:
Вы ничего не возвращаете из своего метода проверки. Вам нужно сделать что-то вроде этого:
function validateName () {
const inp = document.getElementById("fname");
const isValid = inp.value.trim().length > 0;
inp.classList.toggle('error', !isValid);
return isValid;
}
function validateGuess () {
const inp = document.getElementById("guess");
const isValid = inp.value.trim() > 10;
inp.classList.toggle('error', !isValid);
return isValid;
}
function validate () {
const isNameValid = validateName();
const isGuessValid = validateGuess();
return isNameValid amp;amp; isGuessValid;
}
.error { border-color: red; }
<form onsubmit="return validate()">
<label for="fname">name</label> <input type="text" name="fname" id="fname" /><br/>
<label for="guess">guess</label> <input type="number" name="guess" id="guess" />
<button>Submit</button>
</form>