这是我的代码,它只允许输入数字。如何限制输入零(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();
});
答案 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