Я нахожусь в процессе написания контактной формы. У меня есть две функции JavaScript в голове (я буду перемещать их позже, но это другой вопрос).Событие onblur, итерация по всем полям формы, не давая пользователю возможность вводить данные.
Первая функция, Validate()
, для события onblur, но не так, как хотелось бы. Вторая функция, formValidate()
, для события onsubmit.
У меня есть оператор switch в функции JavaScript для использования в событии onblur HTML.
Код JavaScript:
<head>
<script type="text/javascript">
function Validate()
{
// Create array containing textbox elements
var input = [document.getElementById('fname'), document.getElementById('lname'), document.getElementById('email1'), document.getElementById('email12'), document.getElementById('message')];
// Loop through each element to see if value is empty
for (var i = 0; i<input.length; i++)
{
if (input[i].value == '')
{
switch(input[i].id){
case 'fname':
alert ('enter you first name');
break;
case 'lname' :
alert ('enter your last name');
break;
case 'email1':
alert ('enter your email address');
break;
case 'email2':
alert ('enter your email address');
break;
case 'message':
alert ('write your message');
break;
}
}
}
}
function formValidate()
{
// Create array containing textbox elements
var inputs = [document.getElementById('fname'), document.getElementById('lname'), document.getElementById('email1'), document.getElementById('email2'), document.getElementById('message')];
var error;
// Loop through each element to see if value is empty.
for(var i = 0; i<inputs.length; i++)
{
if(inputs[i].value == '')
{
error = 'Please complete all fields.';
alert(error);
return false;
}
}
}
</script>
</head>
HTML-:
<form onsubmit="return formValidate()" action="mailto:[email protected]" method="post" id="contactForm" >
<fieldset>
<dl>
<dt> First Name:</dt>
<dd>
<input class="input" type="text" name="fname" id="fname" onblur="Validate()" />
</dd>
<dt> Last Name:</dt>
<dd>
<input class="input" type="text" name="lname" id="lname" onblur="Validate()"/>
</dd>
<dt> Email Address:</dt>
<dd>
<input class="input" type="text" name="email1" id="email1" onblur="Validate()"/>
</dd>
<dt> Email Address:</dt>
<dd>
<input class="input" type="text" name="email2" id="email2" onblur="Validate()"/>
</dd>
<dt> Message:</dt>
<dd>
<textarea name="address" id="address" rows="10" cols="10" onblur="Validate()"></textarea>
</dd>
<dd>
<input type="submit" value="submit" name="submit" />
</dd>
</dl>
</fieldset>
</form>
Код работает, кроме этого: Когда я нажимаю на поле, я получаю следующее предупреждение:
Если я нажму, предотвратите всплывающие окна, предупреждения полностью прекратятся. Если я нажму «ОК», он перейдет к следующему полю, например, от имени fname до lname, и продолжится через поля, не позволяя пользователю вводить какие-либо данные.
Как исправить эту проблему?
Нет проблем. Я имел в виду показывать сообщение рядом с каждым текстовым полем, если оно неверно, вместо использования 'alert()'. Что-то вроде этого: http://cdn.tripwiremagazine.com/wp-content/uploads/images/stories/Articles/scripting-toolbox/validate.jpg – MrCode
Да, это была бы идея. – MrCode