2013-11-15 4 views
0

У меня есть странная проблема с проверкой 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 ...

ответ

2

в HTML вы связаны, значение по умолчанию имеет ненулевую длину:

<input id="Email" type="text" value=" " seize="40" onblur="ValidateEmail()"> 

... но ваш JS сравнивает к нулю:

if(E.length == 0){ error += 'Bitte geben Sie ihre E-Mail ein!\n'; } 
Смежные вопросы