如何限制文本输入中的输入数字
我有一个用于更改分页页面的文本输入。 我需要将页码的输入限制为某个数字fe 15(最大页数)。 所以我正在尝试使用下面的代码,但总是当数字高于15时,值将变为15和实际输入数字。
actual.on('keypress', function() { console.log('test'); var t = $(this); if (t.val() 15) t.val('15'); });
小提琴: http : //jsfiddle.net/v6fhobr7/
有人可以帮忙吗?
尝试将它从'keypress'
改为'keyup'
……有轻微的闪烁,但它有效。
使用number
字段。
@ rfornal的解决方案工作正常 ,但除非你真的很快,否则很难输入单个数字值:
http://jsfiddle.net/v6fhobr7/7/
因此,最好在更改值之前设置一个小的超时:
var actual = $('.actual'); var tm; actual.on('keyup', function () { var t = $(this); if (tm) clearTimeout(tm); tm = setTimeout(function() { if (t.val() < 1) t.val('1'); if (t.val() > 15) t.val('15'); }, 250); });
JSFiddle演示: http : //jsfiddle.net/v6fhobr7/10/
在jQuery 2.x中,您可以使用actual.on('input')
,它可以在没有闪烁的情况下执行您想要的操作。
请注意,这将阻止用户完全清除输入; 如果你想允许这个,那么你可能想要明确地处理t.val() == ''
。
actual.on('input', function(e) { var t = $(this); if (t.val() == '') return; if (t.val() < 1) t.val('1'); if (t.val() > 15) t.val('15'); });
http://jsfiddle.net/v6fhobr7/12/
编辑:
请注意,此解决方案不会将输入限制为仅限数字字符(您仍然可以键入字母和符号)。 如果你想防止这种情况,除了上面的回答之外,还可以使用此解决方案 。
或者,如果您不关心IE 9或移动浏览器,Mathletics的答案是最好的。