将html输入框中的值保持在设定金额以下

时间:2009-03-10 13:22:04

标签: javascript validation

我的输入框中只能包含数值(使用this插件) 现在我希望输入低于90,比如90。 如果输入的值超过此最大上限或无法解析,则应插入先前的值。 默认情况下,该框将包含“1”。

<input id="targetQuantity" name="targetQuantity" type="text" value="1" />

我想我应该以某种方式捕捉当前的价值。尝试解析新值。如果是允许值,请继续使用此值,否则,将旧值重新设置 由于我的JS技能非常有限,我甚至不知道我可以使用哪些事件,而且我发现我在intarwebz上找到的文档相当令人困惑。

- EDIT--
我最终使用Sergei's代码并使用Aaron's可用性建议 我现在正在寻找的是启用/禁用整个表单的提交。 仅仅禁用提交按钮是不够的。

3 个答案:

答案 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)在用户输入时不起作用:最终,用户将点击空格和对话框将关闭,可能是用户注意到有对话或它说了什么。

您可能需要查看jQueryPrototype等库,因为它们已包含您需要的所有构建块,并且会为您修复许多浏览器错误。

答案 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)" />