如何限制文本输入中的输入数字

我有一个用于更改分页页面的文本输入。 我需要将页码的输入限制为某个数字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的答案是最好的。