Функция validate() не вызывается

63
8

Я создал форму, и я хочу, чтобы мой JavaScript проверял мою форму, проверяя, является ли длина имени человека > 20. Если я пытаюсь сделать всплывающее предупреждение, но оно не работает. Он ничего не делает.

Это мой HTML:

<form name = "enrol" onsubmit="validate()">
<h3>Please complete the form below. Mandatory fields marked with *</h3>
<fieldset>
<h4>Personal Details</h4>
<p>
<label for="fname">*First Name</label> <input type="text" name="fname" id="fname" placeholder="First Name" />
</p>
<p>
<label for="lname">*Last Name</label> <input type="text" name="lname" id="lname" placeholder="Last Name" />
</p>
</fieldset>
</form>

Это мой JavaScript, с которым они связаны посредством ссылок. Все остальные скрипты работают, кроме функции validate()

window.onload = function() {
console.log("The window has finished loading");
var SubmitButton = document.getElementById("SubmitButton");
SubmitButton.addEventListener('click', function() {
document.getElementById("SubmitButton").click();
}, false);
console.log("The submit button has been clicked");

var fname = document.getElementById("fname");
fname.addEventListener('keyup', function() {
console.log((fname).value);
}, false);

var lname = document.getElementById("lname");
lname.addEventListener('keyup', function() {
console.log((lname).value);
}, false);

function validate(){
var fname = document.enrol.fname.value;
var lname=document.enrol.lname.value;
if(fname.length>20){
alert("Value can't exceed 20");
}
if(lname.length>20){
alert("Value can't exceed 20");
}
}

спросил(а) 2021-01-28T01:16:21+03:00 3 месяца, 1 неделя назад
1
Решение
62

Поместите эту функцию validate вне обработчика события window.onload.

window.onload = function() {
console.log("The window has finished loading");

var SubmitButton = document.getElementById("SubmitButton");
SubmitButton.addEventListener('click', function() {
document.getElementById("SubmitButton").click();}, false);
console.log("The submit button has been clicked");

var fname = document.getElementById("fname");
fname.addEventListener('keyup', function() {
console.log((fname).value);}, false);

var lname = document.getElementById("lname");
lname.addEventListener('keyup', function() {
console.log((lname).value);}, false);
}

function validate()
{

var fname = document.enrol.fname.value;
var lname=document.enrol.lname.value;

if(fname.length>20)
{
alert("Value can't exceed 20");
}
if(lname.length>20)
{
alert("Value can't exceed 20");
}
}

ответил(а) 2021-01-28T01:16:21+03:00 3 месяца, 1 неделя назад
44

Это связано с тем, что функция validate() недоступна в глобальной области. Причина этого заключается в том, что она находится внутри анонимной функции, назначенной window.onload, и поэтому она действительна только для вызова внутри этой функции.


Чтобы исправить это, просто переместите его после закрытия } для функции window.onload.

ответил(а) 2021-01-28T01:16:21+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема