我的输入框中只能包含数值(使用this插件) 现在我希望输入低于90,比如90。 如果输入的值超过此最大上限或无法解析,则应插入先前的值。 默认情况下,该框将包含“1”。
<input id="targetQuantity" name="targetQuantity" type="text" value="1" />
我想我应该以某种方式捕捉当前的价值。尝试解析新值。如果是允许值,请继续使用此值,否则,将旧值重新设置 由于我的JS技能非常有限,我甚至不知道我可以使用哪些事件,而且我发现我在intarwebz上找到的文档相当令人困惑。
- EDIT--
我最终使用Sergei's代码并使用Aaron's可用性建议
我现在正在寻找的是启用/禁用整个表单的提交。
仅仅禁用提交按钮是不够的。
答案 0 :(得分:6)
<input id="targetQuantity" name="targetQuantity" type="text" value="1" onkeyup="check(this)" />
... JavaScript的:
var v=1;
function check(i) {
if(i.value > 100) {
i.value=v;
alert("< 100");
}
else
v=i.value;
}
答案 1 :(得分:2)
这应该有所帮助:JavaScript Madness: Keyboard Events
现在关于可用性的一句话:永远不要在用户输入时更改值。如果你想知道原因,试试吧。
相反,将字段变为红色(设置背景颜色)。提交表单后,再次运行验证以确保用户已修复错误。如果没有,请在字段附近的某处显示内联错误消息(“值必须小于&lt; 90”),并将焦点设置为字段。
请勿使用alert()。 alert()仅用于调试,在真正的Web应用程序中没有用,因为它a)中断用户的工作流程,b)在用户输入时不起作用:最终,用户将点击空格和对话框将关闭,可能是用户注意到有对话或它说了什么。
答案 2 :(得分:1)
在javascript代码块中写下这个js:
var LastGood = 1;
function CheckValue(input, max) {
var value = Number(input.value);
if (NaN == value || input.value>max) { //it is not a number or is too big - revert
input.value = LastGood;
} else { //it is ok, save it as the last good value
LastGood = value;
}
}
将您的输入表单更改为
<input id="targetQuantity" name="targetQuantity" type="text" value="1" onkeyup="CheckValue(this, 90)" />