Хорошо, так что мой код в значительной степени работает ... за исключением случаев, когда вы нажимаете кнопку "Отправить" второй раз , и все еще остается пустое поле, добавлено * обязательно в тегах ярлыка передтеги ввода будут дублироваться .Это плохо!Я могу предупредить nodeValue после функции (x), но каким-то образом есть проблема с оповещением где-либо еще ... что также, я считаю, является причиной, по которой я не могу использовать простое решение if, которое я прокомментировал внизумоего кода.
Буду весьма признателен за любые изменения в моем коде или предложения.Кроме того, я хотел бы, чтобы некоторые ссылки следовали.Надеюсь, однажды я смогу думать достаточно программно, чтобы вернуть SO ...
Большое спасибо заранее. Вот мой код:
Javascript:
var obj = {
form : document.getElementsByTagName('input'),
btn : document.getElementById('submit'),
init : function(){
obj.btn.form.onsubmit = obj.handleEvent;
},
handleEvent : function(){
for (var i=0; i<obj.form.length; i++){
if (obj.form[i].value===''){
switch(obj.form[i].name){
case 'fname' :
case 'lname' :
case 'phone' :
case 'email' : match=true; obj.error(obj.form[i]); break;
}
}
}
return false;
},
error : function(x) {
var req = document.createTextNode(' * required');
var span = x.previousSibling.appendChild(document.createElement('span'));
span.className = 'error';
// if (x.previousSibling.firstChild.nextSibling.firstChild.nodeValue !== ' * required'){
span.appendChild(req);
// }
// alert(x.previousSibling.firstChild.nextSibling.firstChild.nodeValue);
}
}
и HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<link type="text/css" href="css/main.css" rel="stylesheet" />
<head>
<title>JavaScript Input form</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="">
<div>
<ul>
<li><label>First Name</label><input type="text" name="fname" size="30" /></li>
<li><label>Last Name</label><input type="text" name="lname" size="30" /></li>
<li><label>Phone</label><input type="text" name="phone" size="30" /></li>
<li><label>Email</label><input type="text" name="email" size="30" /></li>
<li><input type="submit" name="submit" id="submit" value="Submit" />
</ul>
</div>
</form>
<script type="text/javascript" src="input.js"></script>
<script type="text/javascript">obj.init();</script>
</body>
</html>
Еще раз спасибо за чтение!