Javascript 确保输入的名称不存在’;不要以空格结尾

Javascript 确保输入的名称不存在’;不要以空格结尾,javascript,Javascript,我正在尝试获取它,以便如果我键入以空格结尾的名称,文本字段将变为红色。大多数代码都能正常工作,但只有一个方法似乎无法正常工作 问题一定在最后一个索引部分的某个地方 var NamePass = true; function ValidateName() { var BlankPass = true; var GreaterThan6Pass = true; var FirstBlankPass = true; var BlankMiddleName = true

我正在尝试获取它,以便如果我键入以空格结尾的名称,文本字段将变为红色。大多数代码都能正常工作,但只有一个方法似乎无法正常工作

问题一定在最后一个索引部分的某个地方

var NamePass = true;

function ValidateName() {
    var BlankPass = true;
    var GreaterThan6Pass = true;
    var FirstBlankPass = true;
    var BlankMiddleName = true;

    if (document.getElementById('Name').value == "") {
        BlankPass = false;
    }

    var Size = document.getElementById('Name').value.length;
    console.log("Size = " + Size);

    if (Size < 7) {
        GreaterThan6Pass = false;
    }

    if (document.getElementById('Name').value.substring(0, 1) == " ") {
        FirstBlankPass = false;
    }

    var LastIndex = document.getElementById('Name').value.lastIndexOf();

    if (document.getElementById('Name').value.substring((LastIndex - 1), 1) == " ") {
        FirstBlankPass = false;
    }

    string = document.getElementById('Name').value;
    chars = string.split(' ');
    if (chars.length > 1) {} else
        BlankMiddleName = false;

    if (BlankPass == false || GreaterThan6Pass == false || FirstBlankPass == false || BlankMiddleName == false) {
        console.log("BlankPass = " + BlankPass);
        console.log("GreaterThan6Pass = " + GreaterThan6Pass);
        console.log("FirstBlankPass = " + FirstBlankPass);
        console.log("BlankMiddleName = " + BlankMiddleName);
        NamePass = false;
        document.getElementById('Name').style.background = "red";
    } else {
        document.getElementById('Name').style.background = "white";
    }
}
var NamePass=true;
函数ValidateName(){
var BlankPass=true;
var GreaterThan6Pass=true;
var FirstBlankPass=true;
var BlankMiddleName=true;
if(document.getElementById('Name')。值==“”){
BlankPass=false;
}
var Size=document.getElementById('Name').value.length;
console.log(“Size=“+Size”);
如果(尺寸<7){
大于6pass=false;
}
if(document.getElementById('Name').value.substring(0,1)==“”){
FirstBlankPass=false;
}
var LastIndex=document.getElementById('Name').value.lastIndexOf();
if(document.getElementById('Name').value.substring((LastIndex-1),1)==“”){
FirstBlankPass=false;
}
字符串=document.getElementById('Name')。值;
chars=string.split(“”);
如果(chars.length>1){}else
BlankMiddleName=false;
如果(BlankPass==false | |大于6pass==false | | | FirstBlankPass==false | | BlankMiddleName==false){
console.log(“BlankPass=“+BlankPass”);
console.log(“GreaterThan6Pass=“+GreaterThan6Pass”);
console.log(“FirstBlankPass=“+FirstBlankPass”);
console.log(“BlankMiddleName=“+BlankMiddleName”);
NamePass=false;
document.getElementById('Name').style.background=“红色”;
}否则{
document.getElementById('Name').style.background=“白色”;
}
}

lastIndexOf
获取字符的最后一个索引,而不是字符串中的最后一个索引。我想你是想用
length
来代替:

var lastIndex = document.getElementById('Name').value.length;
现在,对一些通用代码进行改进。不要从
true
的所有变量开始,有条件地将它们设置为
false
,只需将它们设置为以下条件:

var NamePass = true;

function ValidateName() {
    var value = document.getElementById('Name').value;

    var BlankPass = value == "";
    var GreaterThan6Pass = value.length > 6;
    var FirstBlankPass = value.charAt(0) == " ";
    var LastBlankPass = value.charAt(value.length - 1) == " ";
    var BlankMiddleName = value.split(" ").length <= 1;

    if (BlankPass || GreaterThan6Pass || FirstBlankPass || LastBlankPass || BlankMiddleName) {
        console.log("BlankPass = " + BlankPass);
        console.log("GreaterThan6Pass = " + GreaterThan6Pass);
        console.log("FirstBlankPass = " + FirstBlankPass);
        console.log("BlankMiddleName = " + BlankMiddleName);
        NamePass = false;
        document.getElementById('Name').style.background = "red";
    } else {
        document.getElementById('Name').style.background = "white";
    }
}

最后-请记住,并非每个人都有中间名,甚至如@poke所指出的,名字长度超过6个字符。

请确保缩进您的代码!如果你也能尝试提供一个标题,更好地描述你未来的问题,那将不胜感激。那么,它的哪一部分确实没有达到预期效果呢?顺便说一句,请将
document.getElementById('Name')
及其值存储在变量中!编程风格
if(chars.length>1){}else{doSomething();}
我永远不会理解。为什么,为什么,为什么,为什么,为什么,为什么做一些如此令人困惑的事情?来吧让它变得合理:
如果(chars.length==1){doSomething();}
。我是邪恶的xD。我认为这个问题可以用正则表达式简化为一行。这就是正则表达式的用途。。。但无论如何,验证姓名是一种不好的做法,有很多可能性(我想说是无止境的)。只需验证length.Btw。与其在文本的开头和结尾都不允许空格,不如去掉空白。哇,我觉得iv'e第一次发现了类。感谢你花时间解释并展示如何改进。现在知道您可以从html中获取一个值并能够使用它会更有意义。谢谢我试图得到它,所以“nnnb nnnn”将被接受。前面不允许有空间,后面也不允许有空间。但是你一定在房间的某个地方有一个name@Steven:差不多,但只需取出
var NamePass=ValidateName()行,并在
提交
事件中选中它,以阻止表单提交。提交事件与我完成时一样,并将有一个提交按钮?@Steven:是的<如果
validateName()
返回
false
,则从表单的提交处理程序返回false
var NamePass = true;

function ValidateName() {
    var value = document.getElementById('Name').value;

    var BlankPass = value == "";
    var GreaterThan6Pass = value.length > 6;
    var FirstBlankPass = value.charAt(0) == " ";
    var LastBlankPass = value.charAt(value.length - 1) == " ";
    var BlankMiddleName = value.split(" ").length <= 1;

    if (BlankPass || GreaterThan6Pass || FirstBlankPass || LastBlankPass || BlankMiddleName) {
        console.log("BlankPass = " + BlankPass);
        console.log("GreaterThan6Pass = " + GreaterThan6Pass);
        console.log("FirstBlankPass = " + FirstBlankPass);
        console.log("BlankMiddleName = " + BlankMiddleName);
        NamePass = false;
        document.getElementById('Name').style.background = "red";
    } else {
        document.getElementById('Name').style.background = "white";
    }
}
function validateName() {
    return /^(?=.{6})(\S+(\s|$)){2,}$/.test(document.getElementById('name').value);
}