尝试为数字构建一个自己的输入数字掩码,空格作为分隔符,没有小数。允许正数和负数。到目前为止解决方案。一个问题,如何不允许只有一个减号(输入字段应该为空或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">
&#13;
答案 0 :(得分: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")
}
当然,您可以在方便时更改它,以更加用户友好的方式通知输入不正确,并调整是否只需要传递整数,或者传递正值等等。