在仅数字输入字段中限制零

时间:2014-10-21 02:26:47

标签: javascript jquery

这是我的代码,它只允许输入数字。如何限制输入零(0)作为第一个数字?

$('.btn').keypress(function(e) {
      var code = e.which;
      if(($(this).val().indexOf(".") == -1 && code == 46) || (code >= 48 && code <= 57) || (code == 8) || (code >= 48 && code <= 57)){
          return true;
        }       
       return false;
    })
    .bind('paste',function(e) {
    e.preventDefault();
});

2 个答案:

答案 0 :(得分:3)

做这样的工作需要相当多的JavaScript。

首先,您需要知道光标/插入符号是否位于位置0.为此,您需要获取选择范围。这取决于您使用的浏览器。

https://developer.mozilla.org/en-US/docs/Web/API/Range

适用于Firefox和Firefox的代码段(未经测试) SeaMonkey的:

var range = document.createRange();
var pos = range.startOffset;

然后如果pos为零,你知道光标在开始时你可以测试用户是否按下了零:

if(pos == 0 && code == 48)
{
    e.preventDefault();
}

但是,您还想要考虑用户输入100并将其光标或选择包括在1或10中的情况。现在他点击删除,剩下的是一个零(0)。如何处理这种情况将在很大程度上取决于您真正想要在UI中提供的内容。我似乎真的很烦人系统会自动删除文本的其余部分,因为它与有效答案不匹配,没有给你一个解决方法......我确实认为这不是一个好的解决方案。 / p>

我通常做的另一个解决方案是让用户输入字段中的任何内容(在您的情况下,只允许数字,但任何随机数),然后当用户点击&#34;提交&#34;,然后验证格式。如果格式错误,请输出错误。在这种情况下,关于马克特的正则表达式的评论适用得很好(虽然他在评论中没有解释任何内容,但是很伤心)。

答案 1 :(得分:0)

试试这个样本

class Fraction:
    def __init__(self, num, den):
        if not (isinstance(num, int) and isinstance(den, int)):
            raise TypeError('Got non-int argument')
        if den == 0:
            raise ValueError('Got 0 denominator')
        self.num = num
        self.den = den