Files
energy_app/src/directive/input/index.js
T
2024-07-23 18:28:49 +08:00

91 lines
2.6 KiB
JavaScript

export default {
bind (el, binding) {
const input = el.querySelector('.van-field__control') || el
input.onkeyup = () => {
// v-input.reset 后端为空不更新数据:前端处理为空重置为0
if (binding.modifiers.reset) {
dataReset(input)
}
// v-input.num
if (binding.modifiers.num) { // 只能输入数字≥0
onlyNum(input)
}
// v-input.num0
if (binding.modifiers.numNo0) { // 只能输入数字>0
onlyNum0(input)
}
input.dispatchEvent(new Event('input'))
}
input.onblur = () => {
// v-input.float
if (binding.modifiers.float) { // 数字+小数点≥0
onlyFloat(input)
}
// v-input.allFloat
if (binding.modifiers.allFloat) { // 数字+小数点≥0
allFloat(input)
}
if (binding.modifiers.floatNo0) { // 数字+小数点>0
onlyFloat0(input)
}
// v-input.maxYearDay
if (binding.modifiers.maxYearDay) { // 正数加最大366天
if(String(Number(input.value))!='NaN'){
if(Number(input.value)>366){
input.value=366
}else if(Number(input.value)<0){
input.value=0
}else{
input.value=parseInt(input.value);
}
}
}
// v-input.maxDayHour
if (binding.modifiers.maxDayHour) { // 正数加最大24
if(String(Number(input.value))!='NaN'){
if(Number(input.value)>24){
input.value=24
}else if(Number(input.value)<0){
input.value=0
}else{
input.value=parseInt(input.value);
}
}
}
input.dispatchEvent(new Event('input'))
}
}
}
function dataReset (input) {
input.value = input.value || 0
}
function onlyNum (input) {
input.value = input.value.replace(/\D+/g, '')
}
function onlyNum0 (input) {
input.value = input.value.replace(/\D+/g, '')
if(input.value == 0){
input.value = ''
}
}
function onlyFloat (input) {
input.value = input.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')
if(Number(input.value) < 0){
input.value = ''
}
}
function onlyFloat0 (input) {
input.value = input.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')
if(Number(input.value) == 0 || Number(input.value) < 0){
input.value = ''
}
}
function allFloat (input) {
input.value = input.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')
}