//验证input标签输入的是否是金钱的数量(两位小数)
function clearNoNum(obj){
obj.value = obj.value.replace(/[^\d.]/g,””); //清除”数字”和”.”以外的字符
obj.value = obj.value.replace(/^\./g,””); //验证第一个字符是数字而不是
obj.value = obj.value.replace(/\.{2,}/g,”.”); //只保留第一个. 清除多余的
obj.value = obj.value.replace(“.”,”$#$”).replace(/\./g,””).replace(“$#$”,”.”);
obj.value = obj.value.replace(/^(\-)(\d+)\.(\d\d).$/,’$1$2.$3’); //只能输入两个小数
}

ps:2016年10月21日更新 今天我女朋友对我说这个方法有点问题: 输入金钱并验证成功后,input失去焦点后;再重新获得焦点,这时去修改金钱中间数字的时候,输入第一个数字后光标焦点会自动跳转到金钱的最后,所以重新写了一下这个方法,特此更新

    function clearNoNum(obj){
    value= obj.value.replace(/\[^\\d.\]/g,""); //清除"数字"和"."以外的字符
    if(obj.value!==value){
        obj.value   =   value;
    }
    value = obj.value.replace(/^\\./g,""); //验证第一个字符是数字而不是
    if(obj.value!==value){
        obj.value   =   value;
    }
    value = obj.value.replace(/\\.{2,}/g,"."); //只保留第一个. 清除多余的
        if(obj.value!==value){
    obj.value   =   value;
    }
    value = obj.value.replace(".","$#$").replace(/\\./g,"").replace("$#$",".");
        if(obj.value!==value){
    obj.value   =   value;
    }
    value = obj.value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/,'$1$2.$3'); //只能输入两个小数
        if(obj.value!==value){
    obj.value   =   value;
    }
}

备注: 这个方法也有问题: (1)如果输入的格式正确,光标不会跳转,但输入格式错误的话,光标还是会跳转到最后; (2)在原来小数点前加新小数点的话会将原小数点及小数点后数字删除
具体解决方案还没想到,想到了再更新 替换方案: 用户输入错误的话不将错误删除,而是返回错误提示信息即可