我正在使用jQuery Spinner,设置了最小值(0)和最大值(500)。我该怎么做才能防止用户在输入框中直接输入非数字值(或超出0-500范围的值)?当用户使用微调器按钮时,最小值和最大值是有效的,但当有人在输入框中输入时不起作用。
您可以使用以下技巧强制进行数字输入:
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);
}
});
(示例见:http://jsfiddle.net/foxbunny/ustFf/)
但我不建议这样做。这不是文本框的预期行为,而且往往会让一些用户感到困惑。因此,最好只在值不在预期范围内时显示警告。
你可以将它设置为 readOnly:
document.getElementById('mySpinner').readOnly = true;
我认为这是正确的做法,虽然这不是被接受的方式,因为这种方法更简单。
$('YOURID/CLASS').spinner({
min: 1,
max: 100,
change: function (event, ui ) {
$(this).spinner('value', parseInt($(this).spinner('value'),10) || 1);
}
});
这是我的做法:
jQuery( "#spinner" ).spinner({ min: 0 });
jQuery( "#spinner").keyup(function() {
if( isNaN (jQuery(this).val() )){ //Only numbers !
jQuery(this).prop("value", "0") ; //Back to 0, as it is the minimum
}
});
完成。