如何阻止多个空格清除表单验证
How can I stop multiple spaces from clearing form validation?
我正在研究一个简单的表单和javascript验证函数。我遇到的唯一问题是,多个空格将被读取为有效条目。我需要确保表单实际上是填写的,而不是有人只是在每个字段中放置两个空格并提交表单。我怎样才能阻止这一切的发生?如果第一个字符是空格,是否有某种方法返回false,或者读取任意数量的没有其他字符的空格为false?
使用字符串修剪函数在验证之前修剪字符串。它应该修剪前后空格。我在下面包含了一个示例,您可以在Mozilla Developer Network
中看到更多关于trim文档的文档。var demoInput = document.getElementById('multipleSpaces');
var demoText = demoInput.value;
var output = document.getElementById('output');
alert('Initial text length: ' + demoText.length + ' 'n trimmed length ' + demoText.trim().length);
<input type='text' value=' ' id='multipleSpaces'/>
<div id='output'></div>
你好,正如Joel提到的,如果你想删除尾随空格,你可以使用.trim()。如果您想将字符串规范化为只有1个空格,可以使用下面的代码片段:
var str = "this is sparta ";
str = str.trim()
str = str.split(/[ ]{2,}/).join(' ')
//output: "this is sparta"
Regex /[ ]{2,}/
查找超过1个空格并拆分字符串,然后.join(' ')
将拆分的元素编译成1个字符串。你可以把它缩短为:
str = str.trim().split(/[ ]{2,}/).join(' ')
假设您使用内置约束验证而不是您自己的约束验证,这似乎是<input>
元素的pattern
属性的一个很好的用例。结合一个required属性,这应该可以完成你想要的,而不需要任何JS:
<form>
<input
type="text"
pattern=".*'S.*"
title="Must contain non-whitespace characters"
required>
<input type="submit" value="Submit">
</form>
检查caniuse以确保该属性在目标环境中有效。
相关文章:
- 如何在使用AngularJS更改下拉值时清除表单中的数据
- 在Chrome中重新加载页面后清除表单输入值
- Angularjs:提交后清除表单无效
- 我无法使用 .reset() 清除表单
- 我无法从引导模式中清除表单数据
- 如何在我的create.js.erb中重置/清除表单
- 如何使用javascript删除项目和清除表单
- 当没有表单名称时,如何在AngularJS中清除表单
- 如何不清除表单jQuery中禁用的输入
- 使用 jQuery 重置/清除表单
- 提交 angularjs 后清除表单
- 在 cakephp 1.3 中提交后清除表单
- MVC 3 剃刀无法使用验证类清除表单值
- JavaScript -- 提交值后清除表单
- 如何编辑我的 js,以便在输出输出之前清除表单
- 提交后清除表单中的文本字段
- Chrome扩展-点击清除表单文本
- 提交时未清除表单
- 如何在验证后清除表单
- 单击运行清除表单的JS函数的按钮后,视图无法恢复