0

我为一个表单编写了验证代码,它是:

function checkWholeForm(theForm) {
  // Create validation variables
  var valid = true;
  var validationMessage = "Please correct the following errors: \r\n";

  // Validate name
  if (document.getElementById('name').value.length == 0)
        {
            validationMessage = validationMessage + '  - Name is missing\r\n';
            valid = false;
        }

//(and there's a few other functions)

// Display alert box with errors if any errors found
  if (valid == false)
        {
            alert(validationMessage);
        }

        return valid;

  }

然后在 HTML 页面中,它是:

<form action="submit.php" method="post" enctype="text/plain" onsubmit="return checkWholeForm(this)">

表中是:

<input type="text" id="name" name="name" size="20" value="" />

但是当我点击提交时,一个空的文本框不会触发警报。我究竟做错了什么?

编辑: http: //jsbin.com/uvepin/2/edit获取完整的 HTML 和 JS。

4

2 回答 2

1

好的,很多问题,您正在使用 getElementById,但您的 id 未设置为电子邮件框,还进行表单验证,从 type = submit 更改为 type = button 并使用 onclick 而不是 onsubmit

我编辑的版本:http: //jsbin.com/ujeval/1/

于 2013-06-02T01:41:02.160 回答
0

如果您打开浏览器的控制台(在 Chrome 和 IE 中为 F12;在 FF 中为 ctrl-shift-K),您会看到您的代码给出了以下错误:

Uncaught ReferenceError: validationMessage is not defined 

...因为您将变量声明为validMess. 然后在您对问题的更新中将其重命名为validMessage. 但是您的其他代码仍然指的是validationMessage.

// WRONG:
var validMessage = "Please correct the following errors: \r\n";

// RIGHT:
var validationMessage = "Please correct the following errors: \r\n";

演示:http: //jsfiddle.net/JH8hg/

更新以配合您的最新更新:

在您的 jsbin.com 演示中,您尝试将onsubmit处理程序添加到按钮:

<input class="button" name="send" type="submit" value="Send!" onsubmit="return checkWholeForm(this)" />

...但是按钮没有onsubmit事件,因此应该将其添加到表单元素中:

<form action="mailto:chandra.apoorv@gmail.com" method="post" enctype="text/plain"
      onsubmit="return checkWholeForm(this)">  

并且该表单元素没有结束</form>标记。

而且您忘记给id="email"您的电子邮件字段提供一个,这意味着您在尝试使用时遇到了 JS 错误document.getElementById('email').value.length

修复了这些问题的工作演示:http: //jsbin.com/ukepuh/1/edit

于 2013-06-02T01:32:48.480 回答