inputRestore.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /**
  2. * 输入框聚焦清空失焦还原 mixin
  3. * 用法:
  4. * 1. 在组件中引入: import inputRestore from '@/mixins/inputRestore'
  5. * 2. 在 mixins 中使用: mixins: [inputRestore]
  6. * 3. 在模板中使用: @focus="onInputFocus('fieldName')" @blur="onInputBlur('fieldName')"
  7. */
  8. export default {
  9. data() {
  10. return {
  11. tempInputValue: '', // 临时存储输入框值
  12. }
  13. },
  14. methods: {
  15. /**
  16. * 通用输入框聚焦处理
  17. * @param {string} field - 表单字段名
  18. * @param {object} formObj - 表单对象,默认为 this.form
  19. */
  20. onInputFocus(field, formObj = this.form) {
  21. this.tempInputValue = formObj[field];
  22. formObj[field] = '';
  23. },
  24. /**
  25. * 通用输入框失焦处理
  26. * @param {string} field - 表单字段名
  27. * @param {object} formObj - 表单对象,默认为 this.form
  28. */
  29. onInputBlur(field, formObj = this.form) {
  30. if (formObj[field] === '') {
  31. formObj[field] = this.tempInputValue;
  32. }
  33. },
  34. /**
  35. * 创建聚焦处理函数
  36. * @param {string} field - 表单字段名
  37. * @param {object} formObj - 表单对象,默认为 this.form
  38. * @returns {function} 聚焦处理函数
  39. */
  40. createFocusHandler(field, formObj = this.form) {
  41. return () => this.onInputFocus(field, formObj);
  42. },
  43. /**
  44. * 创建失焦处理函数
  45. * @param {string} field - 表单字段名
  46. * @param {object} formObj - 表单对象,默认为 this.form
  47. * @returns {function} 失焦处理函数
  48. */
  49. createBlurHandler(field, formObj = this.form) {
  50. return () => this.onInputBlur(field, formObj);
  51. }
  52. }
  53. }