【问题标题】:Keep value in html input box below set amount将 html 输入框中的值保持在设定值以下
【发布时间】:2009-03-10 13:22:04
【问题描述】:

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

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

我想我应该以某种方式捕捉当前值。尝试解析新值。如果是允许值,则继续使用该值,如果不是,则将旧值放回原处。
由于我的 JS 技能非常有限,我什至不知道我可以使用哪些事件,而且我发现我在 intarwebz 上找到的文档相当混乱。

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

【问题讨论】:

  • 为什么要使用 javascript?为什么不直接将 maxlength="90" 添加到输入元素的属性中?
  • 因为 maxlength 允许 90 个字符。他想要最大值,如果它存在的话......
  • 呃!应该更仔细地阅读...

标签: javascript validation


【解决方案1】:
<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;
}

【讨论】:

    【解决方案2】:

    这应该会有所帮助:JavaScript Madness: Keyboard Events

    现在谈谈可用性:永远不要在用户键入时更改值。如果您想知道原因,请尝试一下。

    改为将字段变为红色(设置背景颜色)。提交表单后,再次运行验证以确保用户已修复错误。如果不是,请在字段附近的某处显示 inline 错误消息(“值必须为

    不要使用 alert()。 alert() 仅用于调试,在真正的 Web 应用程序中没有用,因为它 a) 会中断用户的工作流程并且 b) 在用户键入时不起作用:最终,用户将点击空格和对话框将关闭,可能用户注意到有一个对话框或它所说的内容。

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

    【讨论】:

    • 感谢您的建议。除了调试,我不使用警报。事实上,它们是我大部分时间在 Opera 中不使用脚本冲浪的原因。另外,我已经在使用 JQuery。
    【解决方案3】:

    在 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)" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2020-10-17
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多