【问题标题】:How to prevent a "0" as the first character when typing in input type number?输入类型号时如何防止“0”作为第一个字符?
【发布时间】:2016-12-06 01:55:54
【问题描述】:

我想防止 0 作为第一个字符。但是当我再次focusout和focusin时,我在第一个添加“2”,它仍然运行,我想不应该运行。

这是我的 HTML

<input type="number" id="test">

我的 JS

$('#test').keypress(function(evt) {
  if (evt.which == "0".charCodeAt(0) && $(this).val().trim() == "") {
  return false;
   }
});

有人帮助或建议我该怎么做吗?谢谢。

【问题讨论】:

  • 您是否试图阻止用户输入以"0" 开头的值? (所以"02" 是不允许的,但"20" 是允许的?)因为如果是这样,你不能通过只测试当前按键来做到这一点,因为用户可以键入"2" 然后将光标移到它前面并输入"0"。 (他们也可以在不使用键盘的情况下编辑字段,即通过粘贴或拖放操作。)
  • 为什么不改变你得到的值我想如果你解析(例如parseint)值中的前导零将被删除
  • 嗨@nnnnnn 是的,我的意思是。

标签: javascript jquery html keycode


【解决方案1】:

您可以使用input 事件,它也处理粘贴的值,String.prototype.replace()RegExp /^0/ 替换元素的.value 中找到的所有0 字符

$("#test").on("input", function() {
  if (/^0/.test(this.value)) {
    this.value = this.value.replace(/^0/, "")
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<input type="number" id="test">

【讨论】:

  • 嗨@guest271314 这不是我的意思。因为我只需要数字,
  • 如果用户试图通过在中间输入零来编辑现有值,这会产生一种奇怪的用户体验,因为它将光标移动到字符串的末尾。另外,我认为 OP 希望允许零,只要它们不是第一个字符。
  • @nnnnnn “另外,我认为 OP 希望允许零,只要它们不是第一个字符。” 好的。请参阅更新后的帖子。将^ 添加到RegExp 的开头;最初解释要求不能输入0 字符。问题似乎没有表明只有第一个字符 0 不应该被允许?
  • @dediwibisono 查看更新后的帖子。将^ 添加到RegExp
  • @guest271314 - 我想添加此编辑,但不够长!在 0 之后添加 + 以防粘贴多个零,例如 this.value = this.value.replace(/^0+/, "")
【解决方案2】:

比较which属性与数字0的ASCII码并返回false。

if (evt.which === 48) {
  return false;
}

Check Fiddle

【讨论】:

  • 嗨@Sushanth 谢谢你的回答。很抱歉,但我想澄清我的问题。您的答案全部禁用“0”。我的意思是“0”只在第一个被禁用。当我为下一个输入“0”时,它应该运行。希望你能理解我的问题谢谢:)
  • OP 的代码不是已经与"0".charCodeAt(0) 检查进行比较了吗?
【解决方案3】:
$('#test').on("keypress",function (evt) {
   if (this.value.length == 1 && evt.which == 48 )
   {
      evt.preventDefault();
   }
});

【讨论】:

  • 如果已经有一些值,您可以在开头键入 0(例如,键入 77,将插入符号移到开头,键入 0)
【解决方案4】:

试试

  if (event.target.value.length == 0 && event.which == 48) {
  return false;
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    相关资源
    最近更新 更多