错误:格式为整数的 javascript 键无效

Error: javascript key in invalid format integer

本文关键字:javascript 无效 整数 格式 错误      更新时间:2023-09-26
<input type="text" name="quantity">

我想要这是一个数字(允许 0-9 和 -(,这是我的代码:

function update_quantity() {
   $(this).val($(this).val().replace(/[^-?'d]/g, ''));
}
$(document).on("change, keyup", "input[type=text])", update_quantity);

前任:

123 -> valid
-123 -> valid
123- -> invalid
-1-12-123 -> invalid
-123-12 -> invalid
-

->错误无法自动替换-123-12到-12312或123-到123,如何解决

这似乎是您要查找的:

https://jsfiddle.net/7vywp5nn/1/

$(document).ready(function() {
  $('input[name=quantity]').on('keyup',function() {
    var v = $(this).val();
    if (!v.match(/^-?[0-9]*$/))
      $(this).val(v.replace(/(?!^-)[^0-9]/g,''));
  });
});

虽然我个人会在changeblur上做,而不是在用户进入时剥离。或者更好的是,返回可见错误并阻止表单提交,而不是自动替换。我真的很讨厌做这种事情的表单字段。造成糟糕的用户体验IMO。

我想要这是一个数字(允许 0-9 和 -(

123---无效!但是 -123 是有效的

请注意,RegExp /[^-?'d]/g允许?字符。如果预期结果是允许0-9-作为第一个字符,则可以使用不带?字符的[^'d+]如果值.length 1并且索引 0 处的值-索引处的返回值0使用带有参数 1.slice()与值的余数相适应, 替换未-'d+字符,否则使用 /(-)$/g 替换输入末尾的-字符

$(document).on("change, keyup", "input[type=text])", update_quantity);

可以删除"change, keyup"处的逗号和选择器"input[type=text])"处的额外)

function update_quantity() {
  $(this).val(function(_, val) {
      return val.length === 1 && val[0] === "-" 
             ? val[0] + val.slice(1).replace(/[^'d+]/g, "")
             : val.replace(/(-)$/g, "")
  });
}
$(document).on("change keyup", "input[type=text]", update_quantity);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<input type="text" name="quantity">