输入数字掩码 - 防止减号

问题描述 投票:0回答:1

尝试为数字构建一个自己的输入数字掩码,空格作为分隔符,没有小数。允许正数和负数。到目前为止解决方案。一个问题,如何不允许只有一个减号(输入字段应该为空或0)和尾随减号?还有其他建议如何改进代码?

function thousandany(x) {
  return x
    .replace(/(?!-)\D+/g, '') //ta bort alla utom nummer
    .toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}

$(document).ready(function() {
  $("input").keyup(function() {
    $(this).val(thousandany($(this).val()));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input style="text-align:right">
javascript jquery masking
1个回答
0
投票

我真的不太了解正则表达式,但你的用户体验似乎不是非常用户友好和舒适。为什么不对数据进行进一步验证以确定它是否正常工作?您强制用户仅在右侧键入。如果你想改变你输入的文字,它有20个数字,你必须删除所有这些只是为了改变第一个。

我建议,作为一种替代方法,正如我所说的,在用户完成数据输入后对代码运行验证(因此它不会变得烦人),或者例如当它集中在输入之外时。用户不是白痴,如果你告诉他一旦他必须输入正数,比如整数,他会相应地改变输入。要经常欺骗他或她的输入实际上会变得烦人,特别是如果你不能改变你已经写过的文本。

你可以检查它是否是一个有效的数字,它是否为整数,是否是正数等。对我来说比以这种方式强制输入更有意义,它也使代码更加复杂 - 当我的意见是,这是不必要的。

另外,不要忘记还有其他方面,如科学记数法(您可能要考虑)也使用字母,如果您想要实现它们,则需要更复杂的正则表达式。

当然我知道这并没有直接回答你的问题,但它可能会让你重新思考,如果你所做的努力是完全必要的,或者你可以采取更有效的方法。

用户关注或单击特定按钮后如何执行此操作的示例如下:

$(document).ready(startCheck)

function startCheck() {

    $("#myInputField").focusout(checkData)
    %("#myButton").click(checkData)
}

function checkData() {
    var data = $("#myInputField").val();
    if $.isNumeric(data) {
        // do something
    } else {
        alert("Please input a number")
}

当然,您可以在方便时更改它,以更加用户友好的方式通知输入不正确,并调整是否只需要传递整数,或者传递正值等等。

© www.soinside.com 2019 - 2024. All rights reserved.