使用JavaScript替换点会删除所有内容

Ell*_*san 16 javascript regex jquery

我走进了一个奇怪的问题.当尝试替换数字输入上的点时,它不会仅替换该点,而是清除整个输入.

$("[data-input-payment-id]").on("keyup", function(e) {
  var test_value = $(this).val().replace(/\./g, "");
  $(this).val(test_value);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" data-input-payment-id="12">
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

如何更改它以便仅删除点?

Sam*_*han 11

我认为(猜测)是因为你使用type="number".然后,数字后跟一个点,例如123.,不是有效数字,并val返回空白.

你可以试试这个:

$("[data-input-payment-id]").on("keyup", function(e) {
  var test_value = this.value.replace(/[^\d,]/g, "");
  $(this).val(test_value);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input data-input-payment-id="12">
Run Code Online (Sandbox Code Playgroud)

这使用普通文本类型并过滤掉替换中除数字之外的任何内容.

编辑:
更改正则表达式以匹配除数字和逗号之外的任何内容.