可能是Javascript的堆栈问题
probably a stack issue with Javascript
我在用javascript验证html表单时遇到了一个奇怪的问题。我对此很陌生,但我已经用其他语言编程了。
因此,当您单击"Absenden"按钮时,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;
}
不知何故,带有电子邮件的部分永远不会显示在警报框中。我不知道为什么...我检查了一千次错别字。此外,chrome 控制台无法识别任何错误。我不明白为什么它永远不会收到电子邮件通知,其余的都可以。
我可以想象问题可能出在此页面上使用的其他js函数中,因为它也抓取电子邮件文本字段,但它将值保存在不同的变量中并且不会更改原始变量,所以应该没有问题吧?(验证.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:x@x.xx)');
}
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;
}
和工具提示.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 中,因此这篇文章不会太大。
网页: http://pastebin.com/pjh0vdEJCSS:http://pastebin.com/nZaVLFCs(有点乱,但它有效)
非常需要任何帮助,因为我什至不知道如何命名问题以通过谷歌找到答案......
在您链接到的 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'; }
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- Rails File_field最大堆栈大小
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- ember.js:转换到相同的路由会产生堆栈溢出问题
- 可能是Javascript的堆栈问题
- D3 堆栈区域数据格式问题
- 堆栈溢出问题突出显示颜色
- 简单的MEAN堆栈问题
- D3堆栈布局问题
- 为什么XML会成为MEAN堆栈应用程序的问题,以及这个错误是关于什么的
- 设置环境变量 MEAN 堆栈 .zshrc 时遇到问题