【vue】输入框和文本域切换

07-19 1714阅读

输入框的样子 

【vue】输入框和文本域切换

文本域的样子

【vue】输入框和文本域切换

当输入框出现滚动条的时候,就自动切换成文本域;当文本域到1行并且宽度小于输入框宽度时切换成输入框

            
             //文本域
              
                
              
              // 输入框
              
                
                
                
                  
                    
                      
                      
                    
                  
                  
                  
                    
                      【vue】输入框和文本域切换【vue】输入框和文本域切换
export default {
 data () {
    return {
      memory: "", //发送信息
      BtnDisabled :false,
      isOverflow: false,//切换输入框为文本框
      inputoffsetWidth: "",//输入框的宽度
      textareawidth: "100%"//文本域的宽度
    };
  },
 methods: {
   // 监听输入框
    oninput (e) {
      if (e !== "") {
        this.BtnDisabled = false;
      } else {
        this.BtnDisabled = true;
      }
      // 输入框超出变成文本框
      this.$nextTick(() => {
        const inputInner = this.$refs.inputRef.$el.querySelector('.el-input__inner');
        const textareaInner = this.$refs.inputRef.$el.querySelector('.el-textarea__inner');
        if (inputInner) {
          this.isOverflow = inputInner.scrollWidth > inputInner.offsetWidth;
          this.inputoffsetWidth = inputInner.offsetWidth
          setTimeout(() => {
            this.$refs.inputRef.focus()
          }, 100)
        }
        if (textareaInner) {
          // 是不是1行
          if (textareaInner.scrollHeight  {
                this.$refs.inputRef.focus()
                this.textareawidth = '100%'
              }, 100)
            }
          }
        }
      });
    },
    // 获取字符串的字节长度,中文2个、英文1个
    getBLen (str) {
      if (str == null) return 0;
      if (typeof str != "string") {
        str += "";
      }
      return str.replace(/[^\x00-\xff]/g, "01").length;
    },
 }
}

this.getBLen(e) * 7 + 35      这个应该是字符串长度乘以字体px加光标显示宽度,但是实际上按照实际数据来会出很大偏差,所以我自己检测了一下,最后才定下适合我的数据。

这个终究是估算的,所有多少会有些偏差,我目前也没找到其他方法,所以最终还是需要你们自行结合实际情况。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]