FInputText_wev8.js 8.38 KB
define("FInputText_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}" data-form="${form}">\t{@if readonly}\t\t<div class="wev-field{@if required} wev-field-required{@/if}{@if needWrap} wev-vertical{@/if}">\t\t\t<div>${field.label}</div>\t\t\t<div>\t\t\t\t<input type="text" style="display:none;" name="fieldname_${field.name}" fieldid="${field.id}" value="${field.value}"/>\t\t\t\t<span class="wev-field-view-span">$${field.valueHtml}</span>\t\t\t</div>\t\t</div>\t{@else}\t\t<div class="wev-field{@if required} wev-field-required{@/if}{@if needWrap} wev-vertical{@/if}">\t\t\t<div>${field.label}</div>\t\t\t<div {@if showCleanBtn}class="wev-has-value"{@/if}>\t\t\t\t{@if assist.active}\t\t\t\t<div class="wev-numbox">\t\t\t\t\t<div class="wev-numbox-minus wev-btn">-</div>\t\t\t\t{@/if}\t\t\t\t\t\t\t\t<input type="${type}" {@if dtpicker}style="display:none;"{@/if} name="fieldname_${field.name}" fieldid="${field.id}" value="${field.value}" placeholder="${placeholder}"/>\t\t\t\t{@if dtpicker}\t\t\t\t<span class="wev-field-view-span">$${field.valueHtml}</span>\t\t\t\t{@/if}\t\t\t\t\t\t\t\t{@if assist.active}\t\t\t\t\t<div class="wev-numbox-add wev-btn">+</div>\t\t\t\t</div>\t\t\t\t{@/if}\t\t\t\t<div class="wev-clear-btn"></div>\t\t\t</div>\t\t</div>\t{@/if}</div>'}),define(["mUtil","Component","Form","i18n"],function(mUtil,Component,Form,i18n){var FInputText=function(options){var _input={},$wevField,$field,$fieldspan,$clearBtn,$clearBtnWrapper;Component.super(this,options),this.type="FInputText",this.tpl=this.type+"_html",this.dataload=!0;var vm=this.viewModel={form:"",field:{label:"",name:"",id:"",type:"text",value:"",expr:"",defaultValue:""},yearOffest:{prev:100,next:1},assist:{active:!0,step:1,precision:2},detailtable:{isA:!1},placeholder:"请输入...",required:!1,readonly:!1,needWrap:!1};function formatFloat(e,s,t){if(""!==e){var i=/(?=\d,\d)(\d),/g,a=function(e){var t=e.split("."),i=String(t[0]),a=t[1];if(a){var l=a.length;if(l<s){for(var n=0;n<s-l;n++)a+="0";return i+"."+a}return l==s?e:Number(e).toFixed(s)}for(var r=0;r<s;r++)0==r&&(e+="."),e+="0";return e};if(!(e=String(e||"")).match(i))return a(e);if(!t)return a(e.replace(i,"$1"));var l=e.split("."),n=l[1]||0;return n=a("."+n),l[0]+String(n).substr(1)}}for(var key in this.dbValueHasSet=!1,this.beforeMount=function(){var e=vm.field.type,t="text";if("password"==e||"tel"==e)t=e;else if("float"==e||"int"==e){t="number";var i=new String(vm.field.value);i&&(vm.field.value=i.replaceAll(",",""))}vm.type=t,vm.assist.active="number"==vm.type&&vm.assist.active,vm.showCleanBtn=!vm.readonly&&vm.field.value&&!vm.assist.active,vm.dtpicker="date"==e||"time"==e||"datetime"==e,vm.assist.min=""===vm.assist.min?NaN:Number(vm.assist.min),vm.assist.max=""===vm.assist.max?NaN:Number(vm.assist.max),Form.utils.setDefaultValue(this.pageid,vm)},this.isReadyForSubmit=function(){var e=vm.required,t=vm.field.type,i=new RegExp(/(^1\d{10}$)|(^0\d{2,3}-?\d{7,8}$)|(^400[0-9]{7})$/),a=$field.val().trim();if("tel"==t){if(e&&!a)return!0;if(i.test(a))return!0;if(e||!e&&a)return Mobile_NS.Alert(i18n.MOBILE_OR_PHONE_TIP),!1}return!0},this.mounted=function(){var t=this;if($wevField=this.$el.find(".wev-field"),$field=this.$el.find("input[name='fieldname_"+vm.field.name+"']"),$fieldspan=this.$el.find(".wev-field-view-span"),$clearBtn=this.$el.find(".wev-clear-btn"),$clearBtnWrapper=$clearBtn.parent(),vm.readonly||_input.init(),$load(function(){_input.pageOnload()}),vm.field.needParseSqlValue)return Form.utils.parseDefaultSqlValue(vm.field.defaultValue,t.pageid,function(e){vm.field.value=e,t.setValue(vm.field.value,!0)});t.setValue(vm.field.value,!0)},_input.init=function(){var a=this,i=vm.required,l=vm.field.type;if(vm.dtpicker){var n=(new Date).getFullYear(),r=require("pageEvent");require(["dtpicker"],function(){var e=null,i=function(){e&&e.dispose()};$fieldspan.on("click",function(){var t=this;t.dtPicker||(t.dtPicker=new $.DtPicker({value:$field.val(),type:l,beginYear:n-Number(vm.yearOffest.prev),endYear:n+Number(vm.yearOffest.next),close:function(){r.destory("change",i)}})),t.dtPicker.show(function(e){return a.setValue(e.value),t.dtPicker.dispose(),t.dtPicker=null,!1}),e=t.dtPicker}),r.destory("change",i).register("change",i)})}else if("float"==l||"int"==l)a.$el.find(".wev-numbox").on("click",".wev-btn",function(e){var t=$(this).hasClass("wev-numbox-minus");_input.assistInput(t)}),$field.on("change blur",function(){var e=$field.val().trim()||"",t=vm.assist.min,i=vm.assist.max;e&&(Number(e)<t&&(mUtil.getLabel(5302,"超出最小值范围(#MIN#)!",function(e){Mobile_NS.Alert(e.replace("#MIN#",t))}),e=t),Number(e)>i&&(mUtil.getLabel(5303,"超出最大值范围(#MAX#)!",function(e){Mobile_NS.Alert(e.replace("#MAX#",i))}),e=i)),$field.val(_input.formatValue(e))});else if("tel"==l){var s=new RegExp(/(^1[3|4|5|8][0-9]\d{8}$)|(^0\d{2,3}-?\d{7,8}$)|(^400[0-9]{7})$/);$field.on("blur",function(){var e=$(this).val()||"",t=s.test(e);if(i&&!e)return!0;t||(i||!i&&e)&&Mobile_NS.Alert(i18n.MOBILE_OR_PHONE_TIP)})}vm.assist.active||$field.on("input change",function(){$clearBtnWrapper.toggleClass("wev-has-value",!!$field.val())}),$clearBtn.on("click",function(){a.setValue(""),"text"!=l&&"tel"!=l&&"password"!=l||$field.focus()})},_input.pageOnload=function(){var $page=this.$container,expr=vm.field.expr,billid=$p("billid");if(expr){var nameArr=(expr.match(/{(\w+)}|{(\w+\.\w+)}/g)||[]).map(function(e){return e.replace(/{|}/g,"")}),runVP=function(){var paramArr={};with(nameArr.forEach(function(e){if(!e.match(/(\w+)\.(\w+)/)||vm.detailtable.isA){var t=$f(e).val();"text"==vm.field.type||isNaN(t)||(t=Number(t)),vm.detailtable.isA&&(e=e.replace(/\./g,"_")),paramArr[e]=t}}),paramArr){var fieldname=vm.field.name;vm.detailtable.isA&&(expr=expr.replace(/\{(\w+)(\.)(\w+)\}/g,"$1_$3"),fieldname=(vm.detailtable.isA?vm.detailtable.name+".":"")+fieldname);var v=eval(expr.replace(/{|}/g,""));$f(fieldname).val(_input.formatValue(v))}};nameArr.forEach(function(e){var t=e.match(/(\w+)\.(\w+)/);t&&!vm.detailtable.isA?mUtil.getDetailTableInstance(t[1],vm.form).bindColSumEvent(runVP):$f(e).$Obj.on("input change",runVP)}),(!billid&&!vm.detailtable.isA||vm.detailtable.add)&&runVP()}},this.getData=function(){return mUtil.parseJSON("fieldname_"+vm.field.name,$field.val())},this.getShowData=function(){var e=mUtil.parseJSON(vm.field.name+"_showvalue",$field.val().replaceAll(" ","&nbsp;"));return e[vm.field.name]=$field.val(),e},this.reset=function(){this.setValue(vm.field.value),$wevField.removeClass("wev-required-remind")},this.checkRequired=function(){var e=vm.required&&!$field.val(),t=vm.field.label||mUtil.getLabel(128146,"单行文本");return $wevField.toggleClass("wev-required-remind",e),e&&t},this.setRequired=function(e){vm.required=e,$wevField.toggleClass("wev-field-required",e),!e&&$wevField.removeClass("wev-required-remind")},this.setValueByDB=function(e){this.dbValueHasSet=!0,!e&&vm.field.value||(vm.field.value=e,this.setValue(e,!0))},this.setValue=function(e,t){if(e=_input.formatValue(e),vm.readonly){var i=vm.field.type,a=e.replaceAll(" ","&nbsp;");"text"!=i&&"tel"!=i||!mUtil.isTel(e)||(a="<a href=\"javascript:Mobile_NS.callMobile('"+e+'\');" class="wev-phone-number">'+e+"</a>"),$fieldspan.html(a)}else vm.dtpicker&&$fieldspan.toggleClass("wev-field-view-tip",!e).html(e||vm.placeholder);$field.val((e+"").replace(/&#\d{5,7};/g,function(e){return $("<div></div>").html(e).html()})),vm.readonly||vm.assist.active||!t||$clearBtnWrapper.toggleClass("wev-has-value",!!e),!t&&$field.triggerHandler("change"),t&&this.dbValueHasSet&&mUtil.trigger("dataload",this.pageid,this.id)},this.bindTrigger=function(e,t){if(vm.field.id&&mUtil.isObject(e)){var i=this.$container,a=e["field"+vm.field.id];a&&($field.bind("change",function(){Mobile_NS.readyToTrigger(a,$field,i)}),vm.field.value&&(!vm.detailtable.isA&&!$p("billid")||t)&&Mobile_NS.readyToTrigger(a,$field,i))}},_input.assistInput=function(e){var t=vm.assist.step,i=Number($field.val()),a=vm.assist.min,l=i-t,n=l<a,r=5302,s="超出最小值范围(#MIN#)!";e||(n=(a=vm.assist.max)<(l=i+t),r=5303,s="超出最大值范围(#MAX#)!"),n&&(mUtil.getLabel(r,s,function(e){Mobile_NS.Alert(e.replace("#MIN#",a).replace("#MAX#",a))}),l=a),this.setValue(_input.formatValue(l))},_input.formatValue=function(e){if(""===e)return e;e=new String(e);var t=mUtil.isEmpty(vm.assist.precision)?2:vm.assist.precision,i=vm.field.type;return"float"==i?e=formatFloat(e,t,vm.readonly):"int"==i&&(e=Number(e).toFixed(0)),e},_input)mUtil.isFunction(_input[key])&&(_input[key]=_input[key].bind(this))};return Component.init(FInputText)});