【发布时间】:2013-04-02 17:56:16
【问题描述】:
我是 javascript 新手,我正在尝试将两段单独工作但不一起工作的代码组合起来:
- 验证我的表单以检查长度、宽度和高度是否非零
- 如果表单有效,则提交表单并在内容加载时显示 css 初始加载屏幕
这是我失败的尝试:
<script type = "text/javascript">
function notEmpty(elem, helperMsg){
if (elem.value.length == 0) {
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
function show() {
if ((notEmpty(document.getElementById('length'), 'Please Enter a Length')==true) &&
(notEmpty(document.getElementById('height'), 'Please Enter a Height')==true) &&
(notEmpty(document.getElementById('weight'), 'Please Enter a Weight')==true)) {
document.getElementById("myDiv").style.display="block";
setTimeout("hide()", 10000); // 10 seconds
}
}
function hide() {
document.getElementById("myDiv").style.display="none";
}
</script>
我的表单将在表单提交时调用show()。 myDiv 是一个 CSS 加载页面元素,在页面加载时出现。再次,如果我的尝试失败了,我深表歉意,我对 javascript 很陌生,如果有任何建议可以为我指明正确的方向,我将不胜感激。
【问题讨论】:
-
您有任何错误吗?有什么事吗?或许可以尝试在
notEmpty函数中添加console.log(elem)并检查元素是否正确。 -
没有错误,'1' 或 '2' 都不起作用,即表单仍然提交空字段,并且在任何一种情况下(有效/无效),myDiv 元素都无法显示
-
好的,所以我建议在
notEmpty函数中添加console.log(elem)作为第一行,并检查是否获得了正确的元素作为参数。如果您使用 Chrome 或 Firefox,您应该能够挖掘日志输出并检查例如价值。 -
第一步是确保您的
show()函数正在被调用。首先将console.log('show it!')放在那里以确保它被调用。一旦你确定它被调用了,你就可以看看它是否与你尝试显示 div 的方式有关。 -
另一方面,
hide函数不会被调用,因为setTimeout()接受函数作为参数,而不是字符串。如果您将其更改为setTimeout(hide, 10000);,则可以,但这可能不是您的主要问题。
标签: javascript css forms validation loading