39-解决方案
10.9.2 解决方案
用 onlyNumbers 类寻找所有元素,并监听 keydown 和 blue 事件。 keydown 事件处理器将阻止用户在字段中输入非数字字符。 blur 事件处理器是一个防范措施,清除任何通过上下文菜单或者浏览器“编辑”菜单中的粘贴功能输入的数据:
$('.onlyNumbers').bind('keydown',function(event){
//按键的keycode
var keyCode = event.which;
// 48~57标准键盘的数字键
var isStandard = (keyCode > 47 && keyCode < 58);
// 96~105扩展键盘的数字键(也称小键盘)
var isExtended = (keyCode > 95 && keyCode < 106);
// 8 Backspace, 46向前删除
// 37左箭头, 38上箭头, 39右箭头, 40下箭头
var validKeyCodes = ',8,37,38,39,40,46,';
var isOther = ( validKeyCodes.indexOf(',' + keyCode + ',') > −1 );
if ( isStandard || isExtended || isOther ){
return true;
} else {
return false;
}
}).bind('blur',function(){
//匹配非数字字符的正则表达式
var pattern = new RegExp('[^0-9]+', 'g');
var $input = $(this);
var value = $input.val();
//用正则表达式清除字段值
value = value.replace(pattern, '');
$input.val( value )
});