我使用的是这个脚本:
let validate = function(e) {
let t = e.value;
e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) + t.substr(t.indexOf("."), 4)) : t;
}
老实说,我知道第一部分说我们需要一个数字或0,而不是100%确定第二部分是什么,但第三部分限制在小数点后3位。但我也想加一条,150以上的数字也不能加(但可以是149.999(。用这个可以吗?
如果我想对7个不同的输入进行不同的验证(例如,有些输入的数字可以达到10,而另一些输入的数字只能小于1,而另一个输入的数字则可以达到150(。我是否必须为这些输入中的每一个建立一个单独的验证,或者我是否可以通过它们的#ID将它们附加在这里?
e
似乎已输入。所以你有不同的可能性
-
为验证函数中的每个输入都有一个固定的规则集
function validate(e) { switch (e.id) { case "input_1": //do validiations for input 1 break; case "input_2": //do validation for input 2 break; default: //no rules for all others break; } }
-
使用一组可能的约束条件,制定一种更通用的方法
<input type="number" data-maxvalue="150"/> <input type="number" data-maxdigits="3"/> <input type="number" data-minvalue="5" data-maxvalue="10"/> function validate(e) { if (e.dataset.minvalue && +(e.value) < +(e.dataset.minvalue)) { e.value = +(e.dataset.minvalue) } if (e.dataset.maxvalue && +(e.value) > +(e.dataset.maxvalue)) { e.value = +(e.dataset.maxvalue) } if (e.dataset.maxdigits) { var t = e.value; e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) + t.substr(t.indexOf("."), +(e.dataset.maxdigits)+1)) : t; } ... }
-
使用内置的表单验证,它可能涵盖您的用例https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation
<input type="number" required max="150" min="10" step="0.001">
您可以在validate函数中添加另一行代码,以测试值是否大于150
if (e.value > 150)
e.value = 150;
我不知道如何调用validate函数,但可以使用函数的第二个参数(let validate = function(e, max)
(来设置最大值。