$('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;
在上面的代码片段中,当长度== 0时,无法输入零和点。在这种情况下,它正在发挥作用。
但是当我们输入零和点以外的类型时,返回到第一个位置,并输入零或点,它被接受。
我想在任何时候禁止零和点作为第一个角色。
答案 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;
}
}
});