【发布时间】:2018-10-11 12:07:57
【问题描述】:
我正在尝试验证文本输入字段中的用户输入。
我写了一个 javascript 函数,用于在 onkeyup 事件上触发的相同目的。
目标是只允许用户输入小于100 且最多有1 小数位的数值。
该功能工作正常,但如果输入无效字符,例如'a',它将在输入框中闪烁,然后被删除。
我想要的是,如果输入的字符违反了定义的条件,它不应该出现在输入框中(因为它现在正在闪烁一瞬间)。
这是我的代码:
function validatePercent(event) {
var txt = $("#tds_input").val();
// alert(event.source);
if (!parseInt(txt)) {
$("#tds_input").val('');
}
if (isNaN(txt / 1)) {
txt = txt.substr(0, txt.length - 1);
$("#tds_input").val(txt);
}
if (txt > 100) {
//alert(2);
txt = txt.toString();
txt = txt.substr(0, txt.length - 1);
$("#tds_input").val(txt);
}
txt = txt.toString();
if (txt.indexOf('.') > -1) {
if (txt.substr(txt.indexOf('.') + 1, txt.length).length > 1) {
txt = txt.substr(0, txt.length - 1);
$("#tds_input").val(txt);
}
}
}
【问题讨论】:
-
你试过用
onkeydown代替吗? -
在事件中调用
preventDefault()会阻止角色出现吗? (我不确定,但这是我会尝试的第一件事。) -
@RobinZigmond:我试过了……没用……
-
@ChrisG:我试过了......但它改变了代码的行为并且不起作用......
-
@RobinZigmond 但这不会阻止用户使用密钥吗? IE。阻止 c 也会阻止 ctrl+c,不是吗?