直接看代码:
复制代码 代码如下:
(function($){
var keycode={
backspace: 8,
caps_lock: 20,
comma: 188,
control: 17,
delete: 46,
down: 40,
end: 35,
enter: 13,
escape: 27,
home: 36,
insert: 45,
left: 37,
// numpad_add: 107,
// numpad_decimal: 110,
// numpad_divide: 111,
// numpad_enter: 108,
// numpad_multiply: 106,
// numpad_subtract: 109,
page_down: 34,
page_up: 33,
period: 190,
right: 39,
shift: 16,
space: 32,
tab: 9,
up: 38
}
var iscontrolcode=function(key){
for(name in keycode){
if(keycode[name]==key)
return true;
}
return false;
}
var number=function(event){
var t=this;
if(event.shiftkey)
return false;
var key=event.keycode;
if(iscontrolcode(key))
return;
if(key105)
return false;
if(key>57 && keyreturn false;
}
var controllist={};
var control=class.extend({
init:function(obj){
this.event=[];
this.target=$(obj);
},
add:function(settings){
var t=this;
t.event.push(settings);
return t;
},
bind:function(){
var t=this;
if(!t.target){
return;
}
t.target.each(function(){
var b=$(this);
b.bind(keydown,t.event.bind(t)).bind(keyup,t.event.bind(t));
if(jquery.browser.msie)
{
b.bind(paste,t.event.bind(t));
}
else{
b.bind(input,t.event.bind(t));
}
});
},
getmethods:function(type){
var t=this;
var list=[];
$(t.event).each(function(i,item){
if(!item.type || !item.method)
return;
if(item.type==all){
list.push(item.method);
}else
{
if(item.type==type){
list.push(item.method);
}
}
});
return list;
},
issuccess:function(list,event,obj){
var istrue=true;
for(var i=0;iif(list[i].call(obj,event)===false)
{
istrue=false;
break;
}
}
return istrue;
},
event:function(ev){
var t=this;
var event=ev.originalevent;
var obj=ev.target;
return t.issuccess(t.getmethods(ev.type),event,obj);
}
});
control.add=function(obj,settings){
var con= controllist[this.selector];
if(!con)
{
con=new control(obj);
controllist[this.selector]=con;
con.bind();
}
con.add(settings);
return control;
}
$.fn.numberable=function(){
$(this).css(imemode,disabled);
control.add(this,{type:keydown,method:number}).add(this,{type:keyup,method:number});
function repnumber(event){
var o= $(this);
if(o.val()){
o.val(o.val().replace(/[^\d]/g,));
}
}
if(jquery.browser.msie){
control.add(this,{type:paste,method:function(event){var o=this;
settimeout(repnumber.bind(o,event),0);
}
});
}
else
{
control.add(this,{type:input,method:repnumber});
}
return this;
}
})(jquery);
用法:
复制代码 代码如下:
$(.class).numberable();
这只是限制了数字,还可以扩展其他的功能,