Мне нужно проверить форму с помощью JS, чтобы без заполнения некоторых обязательных полей форма не может быть отправлена.
Например, чтобы указать фамилию по мере необходимости, я использовал,
<script>
function validateform(){
var x=document.forms["vacancy"]["surname"].value;
if(x==""){alert("Surname must be filled out");
return false;}
</script>
Форма:
<form name="vacancy" action="" onSubmit="return validateform()">
Surname <input name="surname" type="text">
</form>
Этот код отлично подходит, но когда я использовал то же самое для дня рождения, он продолжается, не проверяя, предоставлено ли поле.
<script>
function validateform(){
var a=document.forms["vacancy"]["dob"].value;
if(a==""){alert("Birthdate must be filled out");
return false;}
</script>
<form name="vacancy" action="" onSubmit="return validateform()">
Date of Birth <input name="dob" type="date">
</form>
Есть ли другой способ проверить, когда тип установлен на сегодняшний день?
По-видимому, у вас есть опечатка во втором скрипте: finction validateform()
, где "finction" должно быть "function".
В качестве альтернативы вы можете просто использовать для этого required
атрибут.
<form name="vacancy" action="">
Surname <input name="surname" type="text" required></br>
DOB <input name="dob" type="date" required></br>
<button type="submit">Submit</button>
</form>
EDIT (для отредактированного вопроса): какой браузер вы используете, поскольку пример исправленного кода работает в приведенном ниже примере. Если вы используете обе формы на одной странице, то объявления функций, validateform
, приведут к столкновению имен.
<script>
function validateform() {
var a = document.forms["vacancy"]["dob"].value;
if (a == "") {
alert("Birthdate must be filled out");
return false;
}
}
</script>
<form name="vacancy" action="" onSubmit="return validateform()">
Date of Birth <input name="dob" type="date">
</form>
Вы можете просто проверить, по умолчанию значение 'mm/dd/yyyy' по-прежнему присутствует в 'a' вместо пустой строки, а затем выдает сообщение.
a
), которое имеет поле, если оно не заполнено?