不允许使用Javascript验证的空白空间
Not Allowing Whitespace With Javascript Validation
我正在处理一个必须在提交时进行验证的web表单。我有一个名字字段,在验证时必须遵循两条规则,名字必须至少有3个字母,并且任何字符之间都不能有空格。我已经让它在名称太短时显示错误消息,但我不知道如何不允许空白。
我如何验证这一点,以便使用javascript在任何字符之间都没有空格?
这是我到目前为止的代码:
<html>
<head>
<title>Project 5</title>
</head>
<body>
<form name="myForm" id="myForm" onsubmit="return validateForm()">
First Name: <input type="text" id="name"> <br>
Age: <input type="text" id="age"> <br>
Street Address: <input type="text" id="address"> <br>
State: <select>
<option value="la">LA</option>
<option value="tx">TX</option>
<option value="ok">OK</option>
<option value="mi">MI</option>
<option value="az">AZ</option>
</select> <br>
Login Password: <input type="password" id="password"> <br>
<input type="submit" value="Submit"> <br>
</form>
<script type="text/javascript">
function validateForm() {
return checkName();
}
function checkName() {
var x = document.myForm;
var input = x.name.value;
if(input.length < 3) {
alert("Please enter a name with at least 3 letters");
return false;
}
else if(input.length >= 3) {
}
}
</script>
</body>
</html>
有一个选项,只需使用Javascript中的一行代码就可以删除所有文本的空白。
text=text.split(' ').join(''); // this will remove all the white space in your text.
我建议使用正则表达式进行表单输入验证。检查以下示例:
shouldFailTooShort = 'ts';
shouldFailSpace = 'has space';
shouldPass = 'no-spaces';
validationRule = /^'S{3,}$/;
validationRule.test(shouldFailTooShort) === false;
validationRule.test(shouldFailSpace) === false;
validationRule.test(shouldPass) === true;
使用正则表达式,可以在一次正则表达式检查中对字段执行所有验证,如上所述。然而,对于可用性,我建议每个验证需求都有一条规则。然后,不同的验证规则可以产生不同的消息,用户不会因为必须阅读一条始终相同的消息而感到困惑。
看看我最喜欢的正则表达式引用。
编辑:根据评论要求,我在此提出部署该解决方案的建议。我建议在生产中不要使用alert
函数,而是在页面本身显示消息,例如在span
元素中。
HTML:
<form name="myForm" id="myForm" onsubmit="return validateForm();">
First Name: <input type="text" id="name" /> <br />
<span id="nameErrMsg" class="error"></span> <br />
<!-- ... all your other stuff ... -->
</form>
<button id="validateTestButton" value="Validate now" onclick="validateForm();">Validate now</button>
JavaScript:
validateForm = function () {
return checkName();
}
function checkName() {
var x = document.myForm;
var input = x.name.value;
var errMsgHolder = document.getElementById('nameErrMsg');
if (input.length < 3) {
errMsgHolder.innerHTML =
'Please enter a name with at least 3 letters';
return false;
} else if (!(/^'S{3,}$/.test(input))) {
errMsgHolder.innerHTML =
'Name cannot contain whitespace';
return false;
} else {
errMsgHolder.innerHTML = '';
return undefined;
}
}
查看jsfiddle中的实际示例。
for (var i=0, len = string.length; i<len; ++i) {
if (string.charAt(i) === ' ') {
alert('Name cannot have spaces!');
break;
}
}
相关文章:
- IE 9压缩XML DOM中的空白空间
- 同位素网格布局使用空白空间
- 动态隐藏列表中的元素,而隐藏的元素不会占用页面上的空白空间
- 如何设置iframe以自动填充HTML中的空白正文空间
- 提交回复后 Ajax 它显示一个空白的数据空间
- 电子邮件的正则表达式允许空白空间、有效电子邮件地址和多个电子邮件地址
- HTML中的哪些空白空间被视为空白节点
- 不允许使用Javascript验证的空白空间
- 使用jquery或javascript显示null cookie值为空白空间
- 在网格上寻找空白空间的算法
- 图表师:堆叠条形图后的空白空间
- Android WebView在底部添加了奇怪的空白空间
- Regexp去除等式中的空白空间
- Bootstrap砌体留下空白空间
- 如何检测文本框字段的空白空间
- html中的UL LI标签创建空白空间
- 为布局中的元素添加内边距'在顶部添加空白空间
- 设置自动高度,取决于文本区域中有多少列,但显然它增加了空白空间
- 当点击图像周围的空白空间时,Javascript幻灯片显示故障
- 需要找到更有效的解决方案,将空白空间写入页面