jQuery Spinner:非数值

我正在使用jQuery Spinner,设置了min(0)和max(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); } }); 

任何非数字的输入都将被数字1替换。您也可以替换|| 1带有警告框,提醒用户他们输入框中的号码无效。

您还应该使用javascriptvalidation程序检查表单提交时的数字,并在读取输入时使用另一个服务器端。

这就是我做的方式:

 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 } }); 

完成。