文本框 价格 保留两位小数 讨论

不知道大家是怎么实现的?

1,用js控制的话,在firefox下面可以输入多位小数,

2,如果用正则表达式控制的话。

 onkeypress="if(/[-]?\.\d\d$/.test(value))event.returnValue=false"

这样写,在firefox下也是错误的。

太郁闷了。

大家给点建议吧,最好能用能用正则表达式在IE,FF下兼容

有人说用match匹配,不用test匹配,会在FF下显示正确,可是试过了,也不能用,

期待大家的解法

网上好多都是错的,真的是错误满天飞呀,

还有一个,是这样写的,也不敢保证是对的 ^(([0-9]+\.[0-9]{2})|([0-9]*[1-9][0-9]*))$  

2. ^(([1-9]\d*)|0)(\.\d{2})?$

转一下别人写的

function isTriDecimal(value){   
                if(value!=null&&value!=''){   
                    var decimalIndex=value.indexOf('.');   
                    if(decimalIndex=='-1'){   
                        return false;   
                    }else{   
                        var decimalPart=value.substring(decimalIndex+1,value.length);   
                        if(decimalPart.length>2){   
                            return true;   
                        }else{   
                            return false;   
                        }   
                    }   
                }   
                return false;   
            }    <<SPAN class=hilite1>input</SPAN> name="sumAdjust" type="text" id="sumAdjust" size="20" value='<c:out value="${form1.sumAdjust}" />'        onkeyup="if(isNaN(value)||isTriDecimal(value))execCommand('undo')"       onafterpaste="if(isNaN(value)||isTriDecimal(value))execCommand('undo')"   />  
function isTriDecimal(value){   
                if(value!=null&&value!=''){   
                    var decimalIndex=value.indexOf('.');   
                    if(decimalIndex=='-1'){   
                        return false;   
                    }else{   
                        var decimalPart=value.substring(decimalIndex+1,value.length);   
                        if(decimalPart.length>2){   
                            return true;   
                        }else{   
                            return false;   
                        }   
                    }   
                }   
                return false;   
            }   
  
<<SPAN class=hilite1>input</SPAN> name="sumAdjust" type="text" id="sumAdjust" size="20" value='<c:out value="${form1.sumAdjust}" />'    
    onkeyup="if(isNaN(value)||isTriDecimal(value))execCommand('undo')"    
    onafterpaste="if(isNaN(value)||isTriDecimal(value))execCommand('undo')"  
/>  


 


作者:水木    
 
原文地址:https://www.cnblogs.com/hsapphire/p/1629291.html