91 lines
2.6 KiB
JavaScript
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')
|
|
} |