Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单验证错误。表单是否允许空字段?_Javascript_Arrays_Forms_Validation_Loops - Fatal编程技术网

Javascript 表单验证错误。表单是否允许空字段?

Javascript 表单验证错误。表单是否允许空字段?,javascript,arrays,forms,validation,loops,Javascript,Arrays,Forms,Validation,Loops,我有一个简单的联系方式,包括姓名、电子邮件、电话号码和信息。 我已经使用javascript来验证它并给出反馈。所有其他函数都能正常工作,如果输入框包含无效字符或值,则将其变成红色。但是,当我对所有框执行状态检查时,即使只有一个输入中有值,表单也会提交 这是我的jS function submit_it() { var name = document.getElementById("username"); var email = document.getElementById

我有一个简单的联系方式,包括姓名、电子邮件、电话号码和信息。 我已经使用javascript来验证它并给出反馈。所有其他函数都能正常工作,如果输入框包含无效字符或值,则将其变成红色。但是,当我对所有框执行状态检查时,即使只有一个输入中有值,表单也会提交

这是我的jS

function submit_it() {


    var name = document.getElementById("username");
    var email = document.getElementById("email");
    var num = document.getElementById("racenum");
    var messagecontent = document.getElementById("messagecontent");

    var inputs = []; 
    inputs[0] = name; 
    inputs[1] = email;
    inputs[2] = num;
    inputs[3] = messagecontent;

    for(i = 0; i < inputs.length; i++)  // Loop through input elements.
    {
        // Perform presence check.
        if(inputs[i].value=="" || messagecontent.value == 'null') //If check fails
        {
            alert("There are errors in your message form."); // Error
            name.focus(); // Return cursor to first input element.
            break; 
            return;
        }
        else  // If Presence check passes
        {
         $.post("sndmsg.php", { com: "" , pg: ""});
            alert("Your message has been sent."); 
            for(i = 0; i < inputs.length; i++) 
            {
                inputs[i].value = '';
                inputs[i].style.backgroundColor = '#fff';
            }
            break; 
            console.log(logit);
            return;

        }
    }

} 
函数submit\u it(){
var name=document.getElementById(“用户名”);
var email=document.getElementById(“电子邮件”);
var num=document.getElementById(“racenum”);
var messagecontent=document.getElementById(“messagecontent”);
var输入=[];
输入[0]=名称;
输入[1]=电子邮件;
输入[2]=num;
输入[3]=消息内容;
对于(i=0;i
我假设这是循环或If语句的问题,但我不明白为什么它没有发现错误! 任何帮助都将不胜感激

使用以下命令:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g, '');
  };
}
参考:

在代码中执行以下操作:

var val = inputs[i].value;

if(val.trim() == "" || messagecontent.value == 'null'){// stuff}

你的循环有缺陷。实际上,您正试图为每个正确填写的字段发布一次表单。。此外,您永远不会到达return语句,因为break语句将在该点退出for循环

您应该在for循环完成后移动POST调用,并确保仅在所有字段都正确填充的情况下调用它。类似这样的结构(伪代码):

在if(inputs[i].value==“”| | messagecontent.value=='null')条件下,您是否可以尝试对中断进行注释;声明和检查
for...
{
    if field check fails
    {
        alert, highlight whetever
        return;     // return from whole function
    }
}

// we come here only if all fields checked ok
post data