【问题标题】:Asp.net How to limit number of digits before and after the decimal point in textbox keypress eventAsp.net如何限制文本框按键事件中小数点前后的位数
【发布时间】:2023-03-14 19:56:01
【问题描述】:

我有一个带有文本框的 Gridview。如何限制文本框按键事件中小数点前后的位数?我希望小数点前最多 6 位,小数点后最多 2 位。 我如何使用 javascript/JQuery 做到这一点?

【问题讨论】:

  • 对于 jQuery 输入掩码插件来说听起来很简单:github.com/RobinHerbots/jquery.inputmask
  • 对抗用户输入是很困难的。用户会感到沮丧,有时您会阻止有效输入。最好在输入字段中给出适当的反馈,并在模糊时修剪输入。

标签: c# javascript jquery asp.net


【解决方案1】:

我个人不喜欢在用户输入内容后立即清除数据。

相反,我喜欢在他们完成输入数据后显示错误消息。

例如,

<asp:TextBox runat="server" ID="TextBox1" MaxLength="9" />
<asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator1"
    ValidationExpression="^((\d{5})*|([1-9]\d{0,5}))(\.\d{0,2})?$"
    ControlToValidate="TextBox1" Text="Input must be 123456.78 format." 
    Display="Dynamic" />

【讨论】:

  • 我不想引发错误。相反,只需限制数字的长度。像 MaxLength = "6" 将在 6 位数后停止写入。但是对于小数前后的长度限制,我就不知道了。
【解决方案2】:

最简单的 javascript 验证 vanilla 样式检查

http://jsfiddle.net/InferOn/8aCJc/

HTML

    <input type="text" id="myInput" onkeyup="check()" />

Javascript

 function check() {
  var check = true;
  var txt = document.getElementById('myInput');
  tmp = txt.value;
  if (tmp && tmp.length > 0) {

    arg = tmp.split('.');
    if (arg && arg.length > 0) {

      check = arg[0].length <= 6;
      if (arg.length > 1 && check) {
        check = arg[1].length <= 2;
      }
    }


  }
  if (!check)
    alert('check failed');

}

【讨论】:

  • 我不会显示验证信息。我想在按键事件中超过长度时阻止数字。
猜你喜欢
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多