123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <template>
- <a-input
- ref="input"
- :value="innerValue"
- v-bind="cellProps"
- @blur="handleBlur"
- @change="handleChange"
- />
- </template>
- <script>
- import { JVXETypes } from '@/components/jeecg/JVxeTable'
- import JVxeCellMixins from '@/components/jeecg/JVxeTable/mixins/JVxeCellMixins'
- const NumberRegExp = /^-?\d+\.?\d*$/
- export default {
- name: 'JVxeInputCell',
- mixins: [JVxeCellMixins],
- methods: {
- /** 处理change事件 */
- handleChange(event) {
- let {$type} = this
- let {target} = event
- let {value, selectionStart} = target
- let change = true
- if ($type === JVXETypes.inputNumber) {
- // 判断输入的值是否匹配数字正则表达式,不匹配就还原
- if (!NumberRegExp.test(value) && (value !== '' && value !== '-')) {
- change = false
- value = this.innerValue
- target.value = value || ''
- if (typeof selectionStart === 'number') {
- target.selectionStart = selectionStart - 1
- target.selectionEnd = selectionStart - 1
- }
- }
- }
- // 触发事件,存储输入的值
- if (change) {
- this.handleChangeCommon(value)
- }
- if ($type === JVXETypes.inputNumber) {
- // this.recalcOneStatisticsColumn(col.key)
- }
- },
- /** 处理blur失去焦点事件 */
- handleBlur(event) {
- let {$type} = this
- let {target} = event
- // 判断输入的值是否匹配数字正则表达式,不匹配就置空
- if ($type === JVXETypes.inputNumber) {
- if (!NumberRegExp.test(target.value)) {
- target.value = ''
- } else {
- target.value = Number.parseFloat(target.value)
- }
- this.handleChangeCommon(target.value)
- }
- this.handleBlurCommon(target.value)
- },
- },
- // 【组件增强】注释详见:JVxeCellMixins.js
- enhanced: {
- installOptions: {
- // 自动聚焦的 class 类名
- autofocus: '.ant-input',
- },
- getValue(value) {
- if (this.$type === JVXETypes.inputNumber && typeof value === 'string') {
- if (NumberRegExp.test(value)) {
- return Number.parseFloat(value)
- }
- }
- return value
- },
- }
- }
- </script>
- <style scoped>
- </style>
|