我需要一段 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
关于JavaScript 只允许数字和特定长度,不允许句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51504819/