如何在0位置限制零

时间:2017-12-30 07:29:43

标签: javascript jquery angularjs



$('input#abc').keypress(function(e){
   if (this.value.length == 0 && e.which == 48 || this.value.length == 0 && e.which == 46 ){
   //console.log(JSON.stringify(this.value.length[0]);
      return false;
      
   }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<input type="text" id="abc" />
&#13;
&#13;
&#13;

在上面的代码片段中,当长度== 0时,无法输入零和点。在这种情况下,它正在发挥作用。

但是当我们输入零和点以外的类型时,返回到第一个位置,并输入零或点,它被接受。

我想在任何时候禁止零和点作为第一个角色。

2 个答案:

答案 0 :(得分:3)

这是因为只有在textarea长度为零时才检查条件。而是检查textarea光标位置。如果它为零并且用户输入无效字符,则返回false。基本上,从

替换你的if条件
 if (this.value.length == 0 && e.which == 48 || this.value.length == 0 && e.which == 46 )

if (this.selectionStart == 0 && e.which == 48 || this.selectionStart == 0 && e.which == 46 )

如果你想要它更简洁,你可以做一些事情(如@ 0x90推荐的那样)

if (this.selectionStart == 0 && (e.which == 48 || e.which == 46 ))

答案 1 :(得分:1)

您可以检查selectionStart以查看光标位置

$('input#abc').keypress(function(e){ 
   if (e.currentTarget.selectionStart === 0){
     if(e.which == 48 || e.which == 46 ) {
       return false;
     }
   }
});

https://caniuse.com/#search=selectionStart