确保输入的名称不以空格结尾
Ensuring that an entered name doesn’t end with a space
我试图得到它,所以如果我输入一个以空格结束的名称,文本字段将变成红色。大部分代码都可以工作,只有一个方法似乎不起作用。
问题一定在最后一个索引部分的某个地方?
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";
}
}
http://jsfiddle.net/UTtxA/10/lastIndexOf
获取字符的最后一个索引,而不是字符串的最后一个索引。我想你的意思是用length
代替:
var lastIndex = document.getElementById('Name').value.length;
另一个问题是,substring
需要一个开始和结束索引,而不是一个开始索引和子字符串长度。您可以使用substr
代替,但charAt
更容易:
if (document.getElementById('Name').value.charAt(lastIndex - 1) == " ") {
FirstBlankPass = false;
}
现在,对于一些一般的代码改进。与其在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";
}
}
还有几个注意事项:
- 使用
-
blah == false
应该写成!blah
- 一个空的
if
后面跟着一个else
也可以用if (!someCondition)
代替 - 该函数看起来应该返回
true
或false
,而不是设置全局变量NamePass
camelCase
变量名而不是PascalCase
变量名可能是一个好主意,后者通常是为构造函数保留的function validateName() {
return /^(?=.{6})('S+('s|$)){2,}$/.test(document.getElementById('name').value);
}
最后-请记住,不是每个人都有中间名,甚至不是一个超过6个字符的名字,正如@poke指出的。
相关文章:
- 我如何找到一个句子中的所有空格并替换忽略它们
- Regex代码只允许一个空格
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 用空格替换下划线PHP
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 当没有文本输入聚焦时检测空格键按下
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 一个密码测试程序,如果存在空格,它会提醒用户
- 在谷歌应用程序脚本中转换为空格的制表符
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- 如何编写RegExpression For在javascript中不允许在字符串中使用前导和结尾空格
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 如何删除正则表达式开头和结尾的空格
- 如何检查字符串是否有空格或结尾
- 如何在文本框的开头和结尾修剪空格
- 如何用正则表达式替换字符串的所有部分,正则表达式以开头,以或空格或{结尾
- 如何生成不包含任何空格的正则表达式,甚至在字符串的开头或结尾也不包含空格
- 确保输入的名称不以空格结尾
- 如何检查javascript中以空格结尾的字符串