【问题标题】:How to restrict zero at second position如何在第二个位置限制零
【发布时间】:2018-01-30 08:35:52
【问题描述】:

在下面的代码中,文本框在起始位置限制为零。但我想在第一个位置只允许一个零,但不超过一个。这是一个例子

例如:- 0.1012400==> 正确

000.4545000==>不正确

0154==> 正确

00154 ==> 不正确

$('input#abc').keypress(function(e){ 
 if (this.selectionStart == 0 && (e.which == 48 || e.which == 46 )){
      return false;
   }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="abc">

【问题讨论】:

  • 我不确定为什么0154 是正确的。如果它是你想要的数字,你可以使用输入类型number

标签: javascript jquery html input


【解决方案1】:

您可以简单地测试开始时是否有 2 个连续的零,如果是,则删除一个:

$('input#abc').on('keypress keydown keyup',function(e){ 
 var v = $(this).val();
 if(v.length >=2 && v[0]=='0' && v[1]=='0') {
    $(this).val(v.substring(1));
 }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="abc">

更新

如果你想在开头考虑减号,这里有一个代码:

$('input#abc').on('keypress keydown keyup', function(e) {
  var v = $(this).val();
  if (v.length >= 2 && v[0] == '0' && v[1] == '0') {
    $(this).val(v.substring(1));
  } else if (v.length >= 3 && v[0] == '-' && v[1] == '0' && v[2] == '0') {
    $(this).val('-' + v.substring(2));
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="abc">

【讨论】:

  • 我认为您还应该检查符号,因为 OP 的第一个示例中包含 -。所以我想- 标志也应该被检查
【解决方案2】:

你可以像这样检查最终的字符串

$('input#abc').on('change', function () {
     console.log(this.value.indexOf('00') === 0);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2023-03-12
    • 2021-11-15
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多