element输入框怎么让输入的内容转化为数字

直接在v-module后面加点number

<el-form-item label="name" prop="expressCode" required>
 <el-input v-model.number="ruleForm.expressCode"></el-input>
</el-form-item>

这样就可以将输入的字符串转换为数字类型了

element输入框使用正则校验来让input框里面只能输入数字或两位小数的浮点数

substr()方法是用来截取字符串的

语法
strObj.substr(start,length)

start是要截取字符串的开始下标,length是要截取的长度

start 必填,要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推

可选,子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串

<!-- v-module绑定的自己的数据 -->
<el-input v-model="moneyInfo.freightAmount"  @keyup.native="moneyInfo.freightAmount =   handleOninput(moneyInfo.freightAmount,'2')"></el-input>
handleOninput(value,type){
  let str = value;
  let len1 = str.substr(0, 1);
  let len2 = str.substr(1, 1);
  //如果第一位是0,第二位不是点,就用数字把点替换掉
  if (str.length > 1 && len1 == 0 && len2 != ".") {
    str = str.substr(1, 1);
  }
  //第一位不能是. ,也不能是 + 或者 —
  if (len1 == ".") {
    str = "";
  }
  if (len1 == "+") {
    str = "";
  }
  if (len1 == "-") {
    str = "";
  }

  //限制只能输入一个小数点
  // 如果返回的下标不等于 -1 那么直接执行if里面的逻辑,定义一个新str去接收 . 以后的字符串,在去indeof,如果还有 . 就执行if里面的逻辑,删掉第二个点
  if (str.indexOf(".") != -1) {
    let str_ = str.substr(str.indexOf(".") + 1);
    if (str_.indexOf(".") != -1) {
      str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1);
    }
  }
  //正则替换
  str = str.replace(/[^\d^\.]+/g, ""); // 保留数字和小数点
  if(type == '3'){
    str = str.replace(/^\D*([0-9]\d*\.?\d{0,3})?.*$/, "$1"); // 小数点后只能输 3 位
  }else{
    str = str.replace(/^\D*([0-9]\d*\.?\d{0,2})?.*$/, "$1"); // 小数点后只能输 2 位
  }
  return str;
}

解决两个一样的字符串但就是使用"=="返回false问题

明明是两个一样的字符串但是怎么样都不相等,就很郁闷,后来百度了一下看到一篇文章说可能是因为空格原因,我试了一下还真是,所以这里记录一下

可能是因为返回的数据带有空格,所以会出现这个问题

for (let i = 0; i <shopInfo.length; i++) {
    if (shopInfo[i].name.trim() == shopName.trim()) {
        console.log(111);
    }
}

解决值还未传入但需要调用先写的问题

页面渲染是从template开始,那么值还没有传入的时候,template里面又需要去取,怎么办咧?

比如说对话框,这个框一直在,只是没有显示罢了,但是页面的渲染已经完成,这时还没调用这个对话框,那么也就没有值的传入,如果用 (.) 去取,就会报错,因为是一个 undefined 去 (.)所以会报错

这时我们就可以用三目运算符去做判断,有值才取,没有值就不取

<template>
    <el-dialog title="角色选择">
        // 做一个判断就不会报错了
        {{ rolesList[0]? rolesList[0].roleName : ''  }}
        <div slot="footer" class="dialog-footer">
            <el-button @click="handleClose">取 消</el-button>
            <el-button type="primary" @click="handleClose">确 定</el-button>
        </div>
    </el-dialog>
</template>