javascript - JavaScript 只允许数字和一定的长度,没有句点
问题描述
我需要一段 JavaScript 的帮助。我有这个代码:
<script>
function FilterInput(event) {
var keyCode = ('which' in event) ? event.which : event.keyCode;
isNotWanted = (keyCode == 69);
return !isNotWanted;
};
function handlePaste(e) {
var clipboardData, pastedData;
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData('Text').toUpperCase();
if (pastedData.indexOf('E') > -1) {
e.stopPropagation();
e.preventDefault();
}
};
</script>
我想将用户的输入限制为 5 位数字。例如,对于这个输入框,我希望允许的数字不超过五个(例如 12345)并且没有句点:
<div class="col-md-3">
<div class="form-group">
<label>Customer Number</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-hashtag"></i></span>
<input name="CustomerNumber" type="number" class="form-control" onkeydown="return FilterInput(event)" onpaste="handlePaste(event)" required>
</div>
</div>
<!-- /.form-group -->
</div>
<!-- /.col -->
我将如何实现这一目标?我知道
type="text"
它允许通过使用“maxlength”来限制空间。
解决方案
一种方法是捕获输入,检查它是否通过了验证检查,如果是,则继续,如果没有,将其设置为最后一个已知的正确值,如下所示:
var oldValue = "";
// listen for "input" event, since that handles all keypresses as well as cut/paste
document.getElementById("myInput").addEventListener('input', function (event) {
var input = event.target;
if (validateInput(input.value)) {
// update old value with new value
oldValue = input.value;
}
else {
// set value to last known valid value
input.value = oldValue;
}
});
function validateInput(str) {
// check length, if is a number, if is whole number, if no periods
return /^[0-9]{0,5}$/.test(str);
}
Test: <input type="text" id="myInput"/><br/>
Try typing/pasting invalid input
推荐阅读
- c++ - 从 CPP 中的抽象类继承
- excel - 使用自动过滤器并选择昨天的日期
- java - 关于Java中返回值形式的问题
- android - 致命异常:使用适用于 Android 应用程序的 Firebase 升级 Google Play 服务时的 ScioFrontendApi
- swift - 检查字符串是否包含 Swift 中的单词
- c - 如何在 c 上打印内部结构供应?
- mysql - 如何在多线程中通过mysql表避免重复
- flutter - 如何使用 TimeAgo 包颤振从 dateTime.Now() 中减去 dateTime
- axios - 使用 axios 的模拟邮递员请求返回字符串而不是对象
- javascript - Material UI:显示不同子项的 TreeVIew Item