0

我正在尝试获取我的 validateForm() 方法以确保电子邮件有效(我已经这样做了),并确保“名称”和“评论”字段不为空。出于某种原因,我无法完成第二部分,需要一些帮助。这是我拥有的当前代码。

<script type="text/javascript">
<!--
function validateForm() {
    var x = document.forms["myForm"]["email"].value;
    var x = document.forms["myForm"]["name"].value;
    var atpos = x.indexOf("@");
    var dotpos = x.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
        alert("Not a valid e-mail address");
        return false;
    }
}
}
if (x == null || x == "") {
    alert("Empty Fields");
    return false;
}
}
// -->
</script>

和形式:

<form name="myForm" action="http://webdevfoundations.net/scripts/formdemo.asp" onsubmit="return      validateForm()"  method="POST">
Your name: <br>
<input type="text" name="name" ><br>
<br>
Your email: <br>
<input type="text" name="email"><br>
<br>
Your comments: <br>
<textarea name="comments" rows="15" cols="50"></textarea><br><br>
<input type="submit" value="Submit">
</form>
4

5 回答 5

0

您将两个表单字段都分配给变量x

于 2013-03-23T12:21:26.303 回答
0

为什么你对 fieldnameemail. 这没有意义。

您的代码中还有一个语法错误,即您}在检查第二个条件之前添加了一个额外的错误。因此,它使该条件超出了该功能

function validateForm() {
    var x = document.forms["myForm"]["email"].value;
    var y = document.forms["myForm"]["name"].value;
    var atpos = x.indexOf("@");
    var dotpos = x.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
        alert("Not a valid e-mail address");
        return false;
    }
    if (x == "" || y == "") {
          alert("Empty Fields");
          return false;
       }
}

所以这里是JS Fiddle 示例

于 2013-03-23T12:21:44.467 回答
0

你应该这样尝试:

    function validateForm(){
        var x=document.forms["myForm"].getElementsByName('email').value;
        var y=document.forms["myForm"].getElementsByName('name').value;
        var atpos=x.indexOf("@");
        var dotpos=x.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
            alert("Not a valid e-mail address");
            return false;
        }
        if (y==null || y==""){
           alert("Empty Fields");
           return false;
        }
   }
于 2013-03-23T12:32:12.627 回答
0

您应该选择以下几点以记住上述代码

(1) 应首先验证空字段,然后是电子邮件检查。(2) 根据代码,您的 Empty 字段逻辑不是 validateForm() 的一部分(可能是拼写错误),因此当调用 validationForm() 方法时,该逻辑不会执行(3)您应该编写 return true在方法 validateForm() 结束时 (4) 使用不同的变量名进行字段检查

通过以上几点,将有助于解决您的问题。:)

于 2013-03-23T12:37:50.160 回答
0

首先,您的代码中存在语法错误。似乎有两个多余的花括号。然后你将这两个字段都分配给 x,只有 name 字段得到它的值。另外,您最好先检查电子邮件字段是否为空,然后对其进行操作。最后,我认为您的电子邮件检查不正确。例如:xxx@a.info。所以你可以试试:

function checkEmail(aEmail){
    var pattern=//w+([-+.']/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/; 
    var objExp=new RegExp(pattern);
    if(objExp.test(str)==true){
        return true;
    }else{
        return false;
    }
}

function validateForm() {
    var x = document.forms["myForm"]["email"].value;
    var y = document.forms["myForm"]["name"].value;
    if (x == "" || y == "") {
        alert("Empty Fields");
        return false;
    }
    if (!checkEmail(y)) {
        alert("Not a valid email");
        return false;
    }
}
于 2013-03-23T12:43:27.203 回答