2

我被要求用 JavaScript 验证代码创建一个简单的表单。我已经构建了整个表单,并且我的所有验证脚本都在工作,但是我被要求在适当字段旁边的 Span 标记中显示任何相关错误(而不是像我习惯的那样显示警报)。

我被告知在每个元素(如文本输入、单选按钮等)旁边有一个跨度标记,并带有先前输入的适当错误文本,然后设置每个跨度的样式以使其隐藏。当按下提交按钮时,脚本应该将适当跨度的样式更改为可见以显示文本。我已经为此编写了代码,但我遇到的问题是我的 Span 错误变得可见,但几乎立即它们消失回隐藏状态。发生这种情况有什么特别的原因吗?

这是我的一些代码。

HTML:

< input type="checkbox" name="agree"/> < span id="agreeSpan>Error text< /span>

CSS:

span {
color:red;
font-size:small;
visibility:hidden;
}

和 JavaScript:

   function validateAgreement()
    {

    var agreeBox = document.registration.agree;
    var agreeSpan = document.getElementById('agreeSpan');

   if (!agreeBox.checked) {
      agreeSpan.style.visibility = 'visible';
      return false;
    }

我错过了一些明显的东西吗?是否有可能我正在尝试设置 1 个特定跨度的样式,并且通用跨度标签的样式属性覆盖了这个特定的跨度?

非常感谢,如果这是一个菜鸟问题,我们深表歉意!我是 JS 新手 :)

4

2 回答 2

1

要停止提交,仅返回 false 是不够的。这取决于您如何调用该函数,我想是这样的

<form action='blah' onsubmit='return validateAgreement();'>
 ...
</form>

注意返回。on submit 处理程序需要返回 false,因此您需要确保返回函数返回的任何值。如果你刚刚...

<form action='blah' onsubmit='validateAgreement();'>
 ...
</form>

那么您的表单将始终被提交。

于 2012-04-14T07:56:00.673 回答
0

id 在您的 HTML 代码中,您错过了It should have的结束引号,id="agreeSpan"但您输入了id="agreeSpan

于 2012-04-14T07:40:44.580 回答