Actually,simplicity is not simple

input只能输入数字的方法

昨天写后台的表单时的需求,发现自己对这方面的了解很不够,在网友steven_2005的这博文中的实现方式不错,但和我的需求还差一点,所以改进了下(一个输入字符不能是小数点):

// input只能输入数字和小数点
function DigitInput(el,e) {
    //8:退格键、46:delete、37-40: 方向键
    //48-57:小键盘区的数字、96-105:主键盘区的数字
    //110、190:小键盘区和主键盘区的小数
    //189、109:小键盘区和主键盘区的负号
    var e = e || window.event; //IE、FF下获取事件对象
    var cod = e.charCode||e.keyCode; //IE、FF下获取键盘码
    //小数点处理
    if (cod == 110 || cod == 190){
        (el.value.indexOf(".")>=0 || !el.value.length) && notValue(e);
    } else {
        if(cod!=8 && cod != 46 && (cod<37 || cod>40) && (cod<48 || cod>57) && (cod<96 || cod>105)) notValue(e);
    }
    function notValue(e){
        e.preventDefault ? e.preventDefault() : e.returnValue=false;
    }
}

使用方式很简单,要注意的是函数得绑定在onKeydown事件上

<input type="text" onkeydown = "DigitInput(this,e);" />

或用事件绑定的方式(jQuery的代码):

$('input').bind('keydown', function(e){
    DigitInput(this, e);
});

实现IE下Array.indexOf函数

我一直觉得Array的indexOf函数很好用,可惜微软的IE浏览到IE8都还不支持,只有自己拓展了,下面的代码我认为是比较的实现。

if(!Array.prototype.indexOf){
    Array.prototype.indexOf=function(el, index){
        var n = this.length>>>0, i = ~~index;
        if(i < 0) i += n;
        for(; i < n; i++) if(i in this && this[i] === el) return i;
        return -1;
    }
}

这函数里的~~很有意思。~~是由两个~(按位“非”)运行符组成,发现实用性还是有的。

~~true; //1 Number
~~false; //0  Number
~~'123'; //123  Number
~~'0fs'; //0  Number

上面的测试代码可以告诉我们‘~~’对来对纯数字的String或布尔值转为数字很有用。以前写过这样的代码

[console.log, alert][!!document.all?1:0]('nootn.com简单其实不简单!');

现在可以这样写了

[console.log, alert][~~!!document.all]('nootn.com简单其实不简单!');

又回到小别的上海了!

时隔7个月又重新踏在上海这块宝地上了!

下面该再写些什么吧!但写什么呢?不知,算了记住这日子吧!2010年7月5日晚上九点!

现已经找到了份工作,离现住的地方挺近的,可惜还得换房子啊!烦!