这里我有一个只允许数字和百分比的功能。但它允许减去( - ),我想在该脚本中限制减去。我怎么能限制。这是我的剧本。或者请建议我这样做。
function validateQty(el, evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode != 45 && charCode != 8 && charCode != 37 && (charCode != 46) && (charCode < 48 || charCode > 57))
return false;
if (charCode == 46) {
if ((el.value) && (el.value.indexOf('.') >= 0))
return false;
else
return true;
}
return true;
var charCode = (evt.which) ? evt.which : event.keyCode;
var number = evt.value.split('.');
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
};
答案 0 :(得分:1)
您可以使用input=number
<input type="number" min="0" />
使用javascript你可以做到:
// Select your input element.
var numInput = document.querySelector('input');
// Listen for input event on numInput.
numInput.addEventListener('input', function () {
// Let's match only digits.
var num = this.value.match(/^\d+$/);
if (num === null) {
// If we have no match, value will be empty.
this.value = "";
}
}, false)
如果输入字段中的数据将发送到服务器,请确保在服务器上也添加此验证。
答案 1 :(得分:1)
您可以将您想要的内容作为输入。做这样的事。
function restrictInput(el) {
el.addEventListener('input', function(e) {
if (!e.target.value.match(/^\d+$|%$/)) {
e.target.value = e.target.value.slice(0, -1)
}
console.log(e.target.value);
})
}
restrictInput(document.getElementById("input1"));
restrictInput(document.getElementById("input2"));
<input id="input1">
<input id="input2">
更新:正如OP所要求的那样。处理输入的通用函数。
注意:您可以在此功能中添加更多限制
答案 2 :(得分:1)
我认为你可以通过对正则表达式进行测试来简化你的脚本。
所以你的功能基本上会变成这样的东西
function validateQty(el, evt)
{
var regex = new RegExp(/^\d+$|%$/);
return regex.test(el.value);
};