jQuery Spinner:非数值

And*_*raD 3 javascript jquery jquery-ui-spinner

我正在使用jQuery Spinner,设置了min(0)和max(500)值.我该怎么做才能防止用户在输入框中直接输入非数值(或0-500范围之外的值)?当用户使用微调按钮时,最小值和最大值有效,但在输入表单中输入内容时则不起作用.

小智 8

可以使用以下技术强制数字输入:

var MIN = 0;
var MAX = 500;

$('#foo').on('keyup', function(e) {
  var v = parseInt($(this).val());
  if (isNaN(v)) {
     return $(this).val(MIN);
  }
  if ($(this).val() < MIN) {
     $(this).val(MIN);
  } else if ($(this).val() > MAX) {
     $(this).val(MAX); 
  } else {
     $(this).val(v);
  }
});
Run Code Online (Sandbox Code Playgroud)

(参见示例:http://jsfiddle.net/foxbunny/ustFf/)

但我不推荐它.这不是预期的文本框行为,并且它往往会使至少一些用户感到困惑.因此,如果值不在预期范围内,最好只显示警告.