JavaScript没有验证响应

JavaScript没有验证响应,javascript,html,Javascript,Html,我是javascript新手,我正在尝试创建一个简单的表单验证。当我点击提交按钮时,什么也没发生。我已经看了一段时间的例子,但我似乎不知道我错在哪里。任何建议: 在这篇文章之后,我将把它全部分解,并开始缩小。但与此同时,我觉得另一双眼睛不会受伤,很可能我做错了什么可怕的事 HTML: <form name="form" action="index.html" onsubmit="return construct();" method="post"> <label>

我是javascript新手,我正在尝试创建一个简单的表单验证。当我点击提交按钮时,什么也没发生。我已经看了一段时间的例子,但我似乎不知道我错在哪里。任何建议:

在这篇文章之后,我将把它全部分解,并开始缩小。但与此同时,我觉得另一双眼睛不会受伤,很可能我做错了什么可怕的事

HTML:

<form name="form" action="index.html" onsubmit="return construct();" method="post">
    <label>Your Name:<span class="req">*</span> </label>
    <input type="text" name="name"  /><br />
    <label>Company Name:<span class="req">*</span> </label>
    <input type="text" name="companyName" /><br />
    <label>Phone Number:</label> 
    <input type="text" name="phone" /><br />
    <label>Email Address:<span class="req">*</span></label> 
    <input type="text" name="email" /><br />
    <label>Best Time to be Contacted:</label> 
    <input type="text" name="TimeForContact" /><br />
    <label>Availability for Presenting:</label> 
    <input type="text"  name="aval" /><br />
    <label>Message:</label>
    <textarea name="message" ROWS="3" COLS="30"></textarea>
    <label>First Time Presenting for AGC?:<span class="req">*</span></label> 
    <input type="radio" name="firstTime" value="Yes" id="yes" /><span class="small">Yes</span>
    <input type="radio" name="firstTime" value="No" id="no"/><span class="small">No</span><br /><br />
    <input type="submit" name="submit" value="Sign-Up" />
</form> 

你的名字:*

公司名称:*
电话号码:
电邮地址:*
联系的最佳时间:
可供展示的物品:
信息: 首次为AGC演示?:* 对 否

JavaScript:

function construct() {
    var name = document.forms["form"]["name"].value;
    var companyName = document.forms["form"]["companyName"].value;
    var email = document.forms["forms"]["email"].value;
    var phone = document.forms["forms"]["phone"].value;
    var TimeForC = document.forms["forms"]["TimeForContact"].value;
    var availability = document.forms["forms"]["aval"].value;

    if (validateExistence(name) == false || validateExistence(companyName) == false)
        return false;
    if (radioCheck == false)
        return false;
    if (phoneValidate(phone) == false)
        return false;
    if (checkValidForOthers(TimeForC) == false || checkValidForOthers(availability) == false)
        return false;
    if (emailCheck(email) == false)
        return false;
}
function validateExistence(name) {
    if (name == null || name == ' ')
        alert("You must enter a " + name + " to submit! Thank you."); return false;
    if (name.length > 40)
        alert(name + " is too long for our form, please abbreviate."); return false;
}

function phoneValidate(phone) {
    if (phone.length > 12 || phone == "" || !isNaN(phone))
        alert("Please enter a valid phone number."); return false;
}

function checkValidForOthers(name) {
    if (name.length > 40)
        alert(name + " is too long for our form, please abbreviate."); return false;
}

function messageCheck(message) {
    var currentLength = name.length;
    var over = 0;
    over = currentLength - 200;

    if (name.length > 200)
        alert(name + " is too long for our form, please abbreviate. You are " + over + " characters over allowed amount"); return false;
}

function radioCheck() {
    if (document.getElementById("yes").checked == false || document.getElementById("no").checked == false)
        return false;
}

function emailCheck(email) {
    var atpos = email.indexOf("@");
    var dotpos = email.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= email.length) {
        alert("Not a valid e-mail address");
        return false;
    }
}
函数构造(){
var name=document.forms[“form”][“name”].value;
var companyName=document.forms[“form”][“companyName”].value;
var email=document.forms[“forms”][“email”].value;
var phone=document.forms[“forms”][“phone”].value;
var TimeForC=document.forms[“forms”][“TimeForContact”].value;
var可用性=document.forms[“forms”][“aval”].value;
if(validateExistence(name)==false | | validateExistence(companyName)==false)
返回false;
如果(radioCheck==false)
返回false;
如果(电话验证(电话)=错误)
返回false;
if(checkValidForOthers(TimeForC)==false | | checkValidForOthers(availability)==false)
返回false;
if(emailCheck(email)==false)
返回false;
}
函数validateExistence(名称){
如果(名称==null | |名称=='')
警告(“您必须输入“+名称+”才能提交!谢谢。”);返回false;
如果(name.length>40)
警告(名称+“对于我们的表单太长,请缩写。”);返回false;
}
功能phoneValidate(电话){
如果(phone.length>12 | | phone==“”| |!isNaN(phone))
警报(“请输入有效的电话号码”);返回false;
}
其他(名称)的功能检查有效性{
如果(name.length>40)
警告(名称+“对于我们的表单太长,请缩写。”);返回false;
}
函数messageCheck(消息){
var currentLength=name.length;
var大于等于0;
超过=电流长度-200;
如果(name.length>200)
警告(名称+”对于我们的表单太长,请缩写。您超出允许的金额“+超过+”个字符);返回false;
}
函数无线电检查(){
if(document.getElementById(“yes”).checked==false | | document.getElementById(“no”).checked==false)
返回false;
}
功能emailCheck(电子邮件){
var atpos=email.indexOf(“@”);
var dotpos=email.lastIndexOf(“.”);
如果(atpos<1 | | dotpos=email.length){
警报(“不是有效的电子邮件地址”);
返回false;
}
}
我调用的函数有误吗?老实说,我不确定我会错在哪里
我不明白如何调试我的代码。。。我正在使用chrome,控制台中没有收到任何错误。有没有一种方法可以设置断点来逐步遍历javascript

我意识到我只是在上面扔了很多代码,所以提前感谢您对其进行筛选

这里有一个错误:

替换
var email=document.forms[“forms”][“email”].value

通过
var email=document.forms[“form”][“email”].value

您的js中有很多地方:

var email=document.forms[“forms”][“email”].value

var phone=document.forms[“forms”][“phone”].value

var TimeForC=document.forms[“forms”][“TimeForContact”].value

var可用性=document.forms[“forms”][“aval”].value

表单误键入为表单

有没有办法设置断点来逐步遍历javascript?

是有一种设置断点的方法:

请参阅以下链接,了解在Chrome调试器控制台中设置断点的方法:


以下几点应该可以解决眼前的问题:

function construct(form) {
  var 
    name = form["name"].value,
    companyName = form["companyName"].value,
    email = form["email"].value,
    phone = form["phone"].value,
    TimeForC = form["TimeForContact"].value,
    availability = form["aval"].value
  ;
  if (!validateExistence(name) || !validateExistence(companyName)) {
    return false;
  }
  else if (!radioCheck) {
    return false;
  }
  else if (phoneValidate(phone) == false) {
    return false;
  }
  else if (!checkValidForOthers(TimeForC) || !checkValidForOthers(availability)) {
    return false;
  }
  else if (emailCheck(email) == false) {
    return false;
  }
}
您在表单
文档中有一个输入错误。表单[“表单”]
,其中“表单”不存在。您可以使用
this
将当前元素传递到函数中,而不是总是遍历对象以到达表单

<form action="index.html" onsubmit="return construct(this);" method="post">


如果您刚开始使用大括号,最好确保设置好所有大括号(即花括号),因为这将帮助您避免混淆对齐和大括号匹配。

替换
var email=document.forms[“forms”][“email”].value


您的第一个问题是
表单
,您的意思是
表单
。看

但您的验证代码还有其他问题,例如:

if (name == null || name == ' ')
在这里,您将检查
name
是否为null或name是否为单个空格。我假设您想检查字段是否为空,但在您的条件下,完全为空的字符串将计算为false,两个空格也是如此。您可能想做的事情如下:

if (!name) {
    // tell the user they need to enter a value
}
Javascript方便地(有时也不方便)将null、空字符串或充满空白的字符串解释为false,因此这应该涵盖您

您还有许多其他问题,请参见:

大多数问题已被其他人指出

  • 当一个字符后面有多行时,需要使用大括号
    {}
    if
    语句
  • 当通过验证时,需要返回true 测试或Javascript将把缺少返回值解释为false
  • 只有当两个单选按钮都被选中时,
    radioCheck
    才会通过
  • 您可以检查您的电话号码是否为NaN(即,它是一个号码),如果为,则返回false
    if (!name) {
        // tell the user they need to enter a value
    }
    
    if (name == null || name == ' ')
        alert("You must enter a " + name + " to submit! Thank you."); 
        return false;
    
    alert("You must enter a " + name + " to submit! Thank you."); return false;
    
    function validateExistence(name, field) {
        if (name == null || name == ' ') {
            alert("You must enter a " + field + " to submit! Thank you."); 
            return false;
        } else if (name.length > 40)
            alert(field + "value is too long for our form, please abbreviate."); 
            return false;
        }
    }
    
    if (radioCheck == false)
    
    if (document.getElementById("yes").checked == false || document.getElementById("no").checked == false) return false;
    
    function myFunction() {
    var data;  //The Values can be like as null,blank,undefined,zero you can test
    
    if(!(!(data)))
     {
     alert("data "+data);
     } 
     else 
     {
        alert("data is "+data);
    }
    
    }