提交 8866759e 编写于 作者: linjinyang's avatar linjinyang

input-box 优化

上级 316d2da3
<template> <template>
<div class="input-unit"> <div class="input-unit">
<InputNumber v-if="type === 'number'" <InputNumber v-if="type === 'number'"
:id="numberId"
:placeholder="placeholder" :placeholder="placeholder"
:size="size" :size="size"
:precision="precision" :precision="precision"
v-model="CurrentVal" v-model="CurrentVal"
:disabled="disabled ? true : false" :disabled="disabled ? true : false"
:formatter="formatter"
:parser="parser"
></InputNumber> ></InputNumber>
<i-input v-else <i-input v-else
:placeholder="placeholder" :placeholder="placeholder"
...@@ -27,6 +30,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators"; ...@@ -27,6 +30,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators";
@Component({}) @Component({})
export default class InputBox extends Vue { export default class InputBox extends Vue {
/** /**
* 双向绑定值 * 双向绑定值
* @type {any} * @type {any}
...@@ -40,11 +44,12 @@ export default class InputBox extends Vue { ...@@ -40,11 +44,12 @@ export default class InputBox extends Vue {
* @memberof InputBox * @memberof InputBox
*/ */
public mounted(){ public mounted(){
this.addEvent();
if(this.textareaId){ if(this.textareaId){
let textarea :any= document.getElementById(this.textareaId); let textarea :any= document.getElementById(this.textareaId);
if(textarea){ if(textarea){
textarea.style=this.textareaStyle; textarea.style=this.textareaStyle;
} }
} }
} }
...@@ -114,6 +119,11 @@ export default class InputBox extends Vue { ...@@ -114,6 +119,11 @@ export default class InputBox extends Vue {
*/ */
@Prop() public autoSize?: any; @Prop() public autoSize?: any;
/**
* 数值框numberId
*/
public numberId :string= this.$util.createUUID();
/** /**
* 当前值 * 当前值
* *
...@@ -158,6 +168,51 @@ export default class InputBox extends Vue { ...@@ -158,6 +168,51 @@ export default class InputBox extends Vue {
} }
return $event; return $event;
} }
/**
* 给数值框中的箭头按钮添加事件
*
* @memberof InputBox
*/
public addEvent(){
if(Object.is(this.type, "number")){
let inputNumber :any = document.getElementById(this.numberId);
let handlerWrap :any = inputNumber.firstElementChild;
handlerWrap.onmouseover=()=>{
inputNumber.style.paddingRight="15px";
inputNumber.style.transition="all 0.2s linear";
}
handlerWrap.onmouseout=()=>{
inputNumber.style.paddingRight="0px";
}
}
}
/**
* 指定输入框展示值的格式
*/
public formatter(value:any){
console.log(this.precision);
if(this.precision===0) return this.CurrentVal;
if(value.indexOf('.')!==-1){
let arr:Array<any> = value.split('.');
if(arr[1]==='00'){
return arr[0];
}
if(parseInt(arr[1])%10===0){
return arr[0]+'.'+parseInt(arr[1])/10;
}
}
return value;
}
/**
* 指定从 formatter 里转换回数字的方式
*/
public parser(value:any){
if(this.precision===0) return this.CurrentVal;
return value;
}
} }
</script> </script>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册