ext 扩展控件—moneyField

/**
*数字控件
*带大写提示,和千分位
 **/
Ext.define(appNameSpace+'.utils.MoneyField', {  
    extend : 'Ext.form.field.Text', 
    alias : 'widget.moneyfield', 
    initComponent : function() {  
        var me = this;
        Ext.apply(Ext.form.field.VTypes, {
            regexMoney: function(val, field) {
                val = val.replace(/,/g,'');
                if(isNaN(Number(val))){
                    if(field.negative_Text && val.indexOf("-")== 0 && val.replace(/-/g,"").length == val.length-1){
                        return true
                    }else{
                        return false;
                    }
                }else{
                    return true;
                }
            },
            regexMoneyText: "请输入数字,最大保留两位小数!"
        });
        me.on('keypress',function(t,e){
            if(t.value.indexOf(".") != -1 && e.keyCode == 46){
                e.stopEvent();  
            }
            if((!t.negative_Text) && (44>e.keyCode && e.keyCode>58)){
                e.stopEvent();  
            }else if((t.negative_Text) && (45>e.keyCode && e.keyCode>58)){
                e.stopEvent();
            }
            
        });
        me.on("mouseover",function(){console.log("123")})
//        Ext.apply(me,{});
        this.callParent(arguments); // 调用你模块的initComponent函数  
    },
    baseChars: '0123456789.-',
    maskRe :new RegExp('[-0-9\.]'), 
    fieldStyle:"text-align:right;",
    enableKeyEvents:true,
    cursor:null,
    vtype:"regexMoney",
    getTip: function() {  
        var tip = this.tip;  
        if (!tip) {  
            tip = this.tip = Ext.widget('tooltip', {  
                target: this.el,  
                width: 420,  
                autoHide: false,  
                anchor: 'top',  
                //closable: true,  
                mouseOffset: [100, -2],  
                constrainPosition: false
            });  
            tip.show();  
        }  
        return tip;  
    }, 
    getValue: function(flag) {
        var me = this,
        val = me.rawToValue(me.processRawValue(me.getRawValue()));
//        me.value = val;
        if(!flag){
            val = val.replace(/,/g,'');
        }
        return val;
    },
    onChange:function(newVal, oldVal){
        /*if(value.replace(/,/g,'') == oldVal.replace(/,/g,'')){
            if(newVal.length < oldVal.length){
                for(var i=0;i<oldVal.length;i++){
                    if(newVal[i] != oldVal[i]){
                        this.setValue(this.toThousands(value));
                    }
                }
            }else{
                return;
            }
        }*/
        var t = this;
        if(isNaN(Number(newVal.replace(/,/g,'')))){
            if(t.negative_Text && newVal.indexOf("-")==0 && newVal.replace(/-/g,"").length == newVal.length-1){
                return
            }else{
                this.setValue("");
                return;
            }
        }
        if(!t.isValid()){
            return;
        }
        var el = this.inputEl.dom;
        /**数字大写**/
        if(newVal==oldVal){
            return;
        }
        var decimal = "";
        var value = newVal;
        /*if(newVal.indexOf(".") != -1){
            if(newVal.substring(value.indexOf(".")+1).indexOf(".") != -1){
                this.setValue(oldVal);
                return;
            }
        }*/
        if(newVal.indexOf(",") != -1){
            value = newVal.replace(/,/g,'');
            if(newVal.replace(/,/g,'') == oldVal.replace(/,/g,'')){
                return;
            }
        }
        
        var tip = this.getTip(); 
        t.setValue(t.getValue(true).replace(/\s/g, ""));
        t.setValue(t.getValue(true).replace(/。/g, "."));
        if(t.value != null && t.value != ''){ 
            tip.setDisabled(false); 
            tip.setTitle(atoc(value));  
            tip.show();  
        }else{  
            tip.setDisabled(true);  
            tip.hide();  
        }  
        /**千分位**/
        if(newVal == ""){
            return;
        }
        
        if(value.indexOf(".") != -1){
            var valLength = value.substring(value.indexOf(".")).length;
            if(valLength == 1){
                decimal = ".";
            }else{
                decimal = value.substring(value.indexOf("."));
            }
            value = value.substring("0",value.indexOf("."));
        }
        var n_ = "";
        if(this.negative_Text && value.indexOf("-")==0){
            value = value.replace(/-/g,'');
            n_ = "-"
        }
        this.setValue(n_ + this.toThousands(value,newVal)+decimal);
        el.setSelectionRange(this.cursor,this.cursor);
        return;
    },
    onBlur:function(e){
        var me = this;
        if(!me.isValid()){
            return;
        }
        var val = me.getValue(true);
        /**数字大写**/
        var tip = this.getTip(); 
        tip.setDisabled(true);  
        tip.hide();
        /**小数位**/
        var value = val.replace(/,/g,'');
        if(val.indexOf(".") != -1){
            value = parseFloat(value).toFixed(2);
            var sVal = val.substring(0,val.indexOf("."));
            var eVal = value.substring(value.indexOf("."));
            var n_ = "";
            if(this.negative_Text && value.indexOf("-")==0){
                value = value.replace(/-/g,'');
                n_ = "-"
            }
            me.setValue(n_ + this.toThousands(sVal)+eVal);
        }else{
            if(val != ""){
                me.setValue(this.toThousands(value));
            }
        }
        return;
    },
    onFocus:function(e){
        var me =  this;
        var el = this.inputEl.dom;
        el.setAttribute("onpaste","return false");
        var val = me.getValue(true);
        var newVal = val;
        /**数字大写**/
        var t = this;
        if(!t.isValid()){
            return;
        }
        var tip = this.getTip(); 
        t.newVal = t.value;
        t.setValue(t.getValue(true).replace(/\s/g, ""));
        t.setValue(t.getValue(true).replace(/。/g, "."));
        if(t.value != null && t.value != ''){ 
            tip.setDisabled(false); 
            tip.setTitle(atoc(newVal));  
            tip.show();  
        }else{  
            tip.setDisabled(true);  
            tip.hide();  
        }  
        me.getValue(true);
        return;
    },
     toThousands:function(num,val) {
        var el = this.inputEl.dom;
        var value = this.value;
        if(num.indexOf(",") != -1){
            num = num.replace(/,/g,'');
        }
        var str =  el.selectionStart;
        var num = (num || 0).toString(), result = '';
        while (num.length > 3) {
            result = ',' + num.slice(-3) + result;
            num = num.slice(0, num.length - 3);
        }
        if (num) { result = num + result; }
        //光标在最后的时候
        if(str == value.length && value.indexOf(".")==-1){
            this.cursor = result.length;
        }else if((result.length - value.length == 1 && value.indexOf(".")==-1)||(result.length - value.substring(0,value.indexOf(".")).length==1 && value.indexOf(".") !=-1)){
            this.cursor = str+1;
        }else if(result.length - value.length == -1 && value.indexOf(".")==-1||(result.length - value.substring(0,value.indexOf(".")).length==-1 && value.indexOf(".") !=-1)){
            this.cursor = str-1;
        }else if(result.length == value.length && value.indexOf(".")==-1){
            this.cursor = str;
        }else if(str == value.length && value.indexOf(".") !=-1){
            this.cursor = value.length;
        }else if(value.indexOf(".") !=-1 ){
            this.cursor = str;
        }
        if(this.negative_Text && value.indexOf("-")==0){
            this.cursor = this.cursor+1
        }
        /*if(str == val.length &&val.indexOf(".") == -1){
            this.cursor = result.length;
        }else if(str == val.length &&val.indexOf(".") != -1){
            var num = val.substring(val.indexOf(".")).length;
            this.cursor = result.length + num;
        }else if(str == this.value.length){
            this.cursor = str;
        }*/
        return result;
    }
}); 

 

转载于:https://www.cnblogs.com/glsqh/p/6185749.html

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值