一些小的简单工具函数记录(持续更新...)

38 阅读1分钟

1、禁止用户在input框内输入空格。一开始使用的是以下这种方式,增加 pattern="^[^\s]+$",但是不知道什么原因并不生效。(后来发现el-input组件不支持prttern属性)

<el-input
  v-model="item"
  placeholder="请输入"
  maxlength="20"
  pattern="^[^\s]+$"
 ></el-input>

之后采用绑定函数的方法去实现 在标签上绑定 @input="replaceStr(item)"方法,通过该方法可以实现想要达到的效果。

 replaceStr(item) {
     item=item.replace(/\s+/g, "");
   }
 

2、课表的表头样式修改。时间和具体的环节中间增加换行符,无论用户到底是先输入时间还是先输入具体环节。

1690354957352.png

为了达到以上的效果,我思考的方式是识别该字符串,获得第一个数字和最后一个数字的位置,如果第一个数字的位置是0,那么证明用户先输入的是时间,那么从最后一个数字的位置开始将整串字符串截取为两段字符串,在中间增加换行符,并且在该标签增加style="white-space: pre-line;"使得换行符生效。如果第一个数字的位置不是0那么从第一个数字的位置开始截取。

 <p style="white-space: pre-line;">{{ item }}</p>

获取到具体课表数据的时候进行遍历,并执行该函数 Data=this.convertFormat(Data)

convertFormat(str){
  const digitRegex = /\d/; // 匹配数字的正则表达式
  let firstPosition = -1;
  let lastPosition = -1;
  for (let i = 0; i < str.length; i++) {
    if (str.charAt(i).match(digitRegex)) {
      if (firstPosition === -1) {
        firstPosition = i; // 找到第一个数字的位置
      }
      lastPosition = i; // 更新最后一个数字的位置
    }
  }
  if(firstPosition==0){
    str=str.substring(0,lastPosition+1)+ '\n' + str.substring(lastPosition+1);
    console.log('str',str)
  }else if(lastPosition==str.length-1){
    str=str.substring(0,firstPosition)+ '\n' + str.substring(firstPosition);
  }
  return str
},