首页>>前端>>Vue->Vue项目常见问题

Vue项目常见问题

时间:2023-11-30 本站 点击:0

input输入框的限制

dom上的代码:

<spanclass="item-wrapper"v-if="showInterval"><el-inputplaceholder="在此输入时间间隔"class="input"v-model="formData.interval"@input.native="onInput"></el-input></span>

当我们在vue中遇到input输入框只能输入数字的问题,例如需要实现输入框中只能输入[1,59]区间的整数,我们可以采用以下方法做限制,这样当我们输入其他不符合的值会直接限制我们无法输入进去:

onInput(e){//验证是否是纯数字letisNumber=/^\d*$/.test(e.target.value);//过滤非数字e.target.value=e.target.value.replace(/\D/g,"");if(!isNumber||e.target.value<1||e.target.value>59){this.$message.warning("只能输入[1,59]区间的整数");e.target.value=''}e.target.value=(e.target.value>=1&&e.target.value<=59&&e.target.value.match(/^\d*/g)[0])||null;},

头像上传问题

dom代码:

<formid="form_face"method="post"enctype="multipart/form-data"style="width:auto;"><inputtype="file"name="fileToUpload"ref="fileToUpload"accept="image/png,image/jpeg,image/gif"@change="fileSelected"style="display:none;"></form>

我们上传文件后需要将流传给后端,我们上传时可以限制上传图片的类型以及图片的大小:

fileSelected(e){let_this=this//得到上传的第一个文件_this.imgObj=e.target.files[0];/*图片类型正则验证*/letimgStr=/\.(jpg|jpeg|png|JPG|PNG)$/;if(!imgStr.test(this.imgObj.name)){this.$message.error('请上传图片')return;}else{//异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容this.file=newFileReader();//在读取操作完成时触发this.file.onload=()=>{//图片文件赋值给图片标签路径this.formData.headPortrait=this.file.result}//将读取到的文件编码成DataURLthis.file.readAsDataURL(this.imgObj);}},

开始时间和结束时间间隔一个月

dom代码:

<spanclass="title">开始时间</span><el-date-picker:format="sFormat"v-model="cStartDate"value-format="yyyy-MM-dd":picker-options="sOptions"></el-date-picker><spanclass="titlee-time">结束时间</span><el-date-picker:format="eFormat"v-model="cEndDate"value-format="yyyy-MM-dd":picker-options="eOptions"class="picker"></el-date-picker>

我们在data中定义format对应的sFormateFormat

sFormat:'yyyy年MM月dd日',eFormat:'yyyy年MM月dd日',

我们在data中定义判断开始时间和结束时间以外的时间设置为不可选择状态:

sOptions:{disabledDate:this.startDateDisabled},eOptions:{disabledDate:this.endDateDisabled},

我们可以给cStartDatecEndDate进行获取和赋值:

cEndDate:{set($val){if(this.type==1)this.endDate=$val;elsethis.vEndDate=$val;},get(){if(this.type==1)returnthis.endDate;elsereturnthis.vEndDate;}},cStartDate:{set($val){if(this.type==1)this.startDate=$val;elsethis.vStartDate=$val},get(){if(this.type==1)returnthis.startDate;elsereturnthis.vStartDate;}},

然后我们在这里写开始时间和结束时间相差一个月的逻辑代码:

//开始时间的判断逻辑startDateDisabled($time){//开始时间和结束时间清空,发现开始时间不能选中,所以增加一行if代码if(!this.cEndDate)return''return$time.getTime()>=time2LongString(this.cEndDate)||$time.getTime()<=(time2LongString(this.cEndDate)-30*24*3600*1000)},//结束时间的判断逻辑endDateDisabled($time){return$time.getTime()<=(time2LongString(this.cStartDate)-24*3600*1000)||$time.getTime()>=(time2LongString(this.cStartDate)+30*24*3600*1000)},

父子组件传值问题

一般父组件传递给子组件的值,我们不建议在子组件中去修改父组件传递的prop,因为vue是单向数据流,易于监测数据的流动,出现了错误可以更加迅速的定位到错误发生的位置。所以一旦我们在子组件中修改父组件中传递的值,控制台会显示警告。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Vue/2565.html