У меня есть странная проблема с проверкой html-формы с javascript. Я очень новичок в этом, но уже запрограммирован на другие языки.Вероятно, проблема стека с Javascript
Поэтому, когда вы нажимаете кнопку «Абсенден», js должен проверять, заполнены ли все обязательные поля, пока он должен давать предупреждение только в том случае, если искомое поле остается пустым. Таким образом, в этой простой функции есть что-то неправильно, что не может найти: (это senden.js)
function initCheck()
{
var error = new String;
var N = document.getElementById("Name").value;
var E = document.getElementById("Email").value;
var F = document.getElementById("Feedback").value;
if(N.length == 0){ error += 'Bitte geben Sie ihren Nachnamen ein!\n'; }
if(E.length == 0){ error += 'Bitte geben Sie ihre E-Mail ein!\n'; }
if(F.length == 0){ error += 'Bitte geben Sie ihr Feedback ein!\n'; }
alert(error);
return true;
}
как-то часть с электронной почтой никогда не неоспоримым отображаются в поле сигнализации. Я понятия не имею, почему ... Я проверил тысячу раз за опечатку. Также хром-консоль не распознает никаких ошибок. Я не понимаю, почему он никогда не получает уведомление по электронной почте, а остальные работают.
Я могу представить, что проблема может быть в другой js-функции, также используемой на этой странице, поскольку она также захватывает текстовое поле электронной почты, но сохраняет значение в другой переменной и не изменяет оригинал, поэтому там не должно быть проблемой правых ?: (validate.js)
function ValidateEmail()
{
var x = new String;
x = document.getElementById("Email").value;
if (CheckSyntax(x) == false) { EmailAlert(); }
return true;
}
function EmailAlert()
{
alert('falsche E-Mail Syntax! (at least like:[email protected])');
}
function CheckSyntax(x)
{
var at = x.indexOf("@");
var dot = x.indexOf(".");
var str3 = (x.length - dot);
if (x.length == 0) {return false;}
if(x.length > 255) {return false;}
if(at <= 1 || at != x.lastIndexOf("@")) { return false; }
if(dot <= (at + 1)) { return false; }
if(str3 < 2 || str3 > 4) { return false }
return true;
}
и tooltip.js:
function initTooltips()
{
var infodiv = document.createElement('DIV');
infodiv.id = 'info';
document.getElementsByTagName('body')[0].appendChild(infodiv);
var liste = document.getElementsByTagName('A');
for (var n=0; n<liste.length; n++)
{
if(liste[n].className.match(/tooltip/))
{
liste[n].onmousemove = showTip;
liste[n].onmouseout = hideTip;
}
}
}
function showTip(ev)
{
if(!ev) { ev = window.event; }
var infotext = '';
for(var n=0; n<this.childNodes.length; n++)
{
if(this.childNodes[n].tagName == "SPAN")
{
infotext = this.childNodes[n].innerHTML; break;
}
}
if(infotext.length)
{
infodiv = document.getElementById('info');
infodiv.innerHTML = infotext;
infodiv.style.display = 'block';
var scrollOffset = getScrollOffset();
infodiv.style.top = ev.clientY + scrollOffset[1] + 20 + 'px';
infodiv.style.left = ev.clientX + scrollOffset[0] + 20 + 'px';
}
}
function hideTip()
{
document.getElementById('info').style.display = 'none';
}
function getScrollOffset()
{
var x = 0, y = 0;
if (self.pageYOffset) // all except Explorer
{
x = self.pageXOffset;
y = self.pageYOffset;
}
else if (document.documentElement && document.documentElement.scrollTop)
// Explorer 6 Strict
{
x = document.documentElement.scrollLeft;
y = document.documentElement.scrollTop;
}
else if (document.body) // all other Explorers
{
x = document.body.scrollLeft;
y = document.body.scrollTop;
}
return new Array(x,y);
}
Я боюсь, что есть проблема с памятью каким-то образом? К сожалению, это выход из моего опыта работы с js до сих пор ... так что, пожалуйста, если у вас есть идея решить проблему, сообщите мне.
Я прикрепляю остальные источники в pastebin, поэтому этот пост не становится слишком большим.
HTML: http://pastebin.com/pjh0vdEJ CSS: http://pastebin.com/nZaVLFCs (немного грязный, но это работает)
Любая помощь очень нужна, потому что я даже не знаю, как назвать эту проблему, чтобы найти ответ через Google ...