jQuery替换为正则表达式无法正常工作

时间:2017-01-30 12:57:39

标签: javascript jquery regex

我想排除所有不是数字或减号的字符。

让我感到震惊的是,我不能以减号开头或在任何地方输入。只有在数字和使用键盘箭头按钮后才输入减号。

我想要的是能够输入-60或类似的东西。 我应该改变什么?

$('.minus').keyup(function() {
  var txt = $(this).val();
  var nwtxt = txt.replace(/[^\d-]/ig, "");
  $(this).val(nwtxt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" maxlength="9" class="tekstvakjes minus">

2 个答案:

答案 0 :(得分:3)

使用文本

而不是使用输入类型数字

答案 1 :(得分:0)

我认为它是某种浏览器防御机制,每当你在数字输入字段中插入一个不是数字的东西并且你从它请求它的值时,它将只是null / undefined。在type =&#34; text&#34;看起来这很好。

另请注意,光标始终放在文本的末尾,因为您总是替换文本。因此,您无法在仅使用键盘交互的数字前插入 - (破折号)。任何地方但在数字前面的破折号无效!

您也可以尝试在数字字段中输入-60,但首先需要插入。 60然后是减号。

使用$('.minus').input(代替keyUp也更好,因为您也可以使用鼠标插入值(和滚轮)。

&#13;
&#13;
$('.minus').keyup(function() {
  var txt = $(this).val();
  console.log("value i got:",txt); //i added this logging to see that you didn't get anything on number.
  var nwtxt = txt.replace(/[^\d-]/ig, "");
  if(nwtext !==txt) //add this if statement so your cursor does not constantly jump to the end!
    $(this).val(nwtxt);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" maxlength="9" class="tekstvakjes  minus" placeholder="number">
<input type="text" maxlength="9" class="tekstvakjes  minus" placeholder="text">
&#13;
&#13;
&#13;