2021年7月13日星期二

小程序textarea设置maxlength后不是你想的那样简单

可能很多小伙伴们。看见这个标题后;觉得作者是一个标题党。textarea设置maxlength后,限制用户输入的字符呗!还能怎么样呢?恭喜你,说对了一半。之前我也一直是这样想的。知道今天我写小完程序后自己测试。发现textarea设置maxlength后,并不是我们想的那样简单:它是一个'有故事的组件'我们来看一下这面这一段代码功能:限制textarea的值最多输入6字符,点击按钮获取用户的输入的值。
<template> <view >	<view >留言内容</view>	 <textarea placeholder-			placeholder="请输入口号内容(最多输入6个字)" 			v-model="formPraise.praiseCont" 			maxlength="6"		/>		<view >			<button type="primary" @tap="gotos">获取值</button>		</view>	</view></template><script>export default { data() {	return {   formPraise:{	  praiseCont:''	 }	} }, methods: {	gotos(){	console.log('超出后==>',this.formPraise.praiseCont)	}, }}</script>

根据上面这一张动态图,我们发现了在textarea显示的值,与我们获取的值不一样。不一样,真不一样。重要的事情说三遍。我最初以为是开发工具缓存值或者出问题了。重启了一次,发现textarea设置maxlength="6"我们输入的值与获取的值真的不一样!textarea设置maxlength后哪是一个'有故事的属性'分明就是一个'有事故的属性'。为什么会出现这样的情况?因为:textarea设置maxlength="6"后,当我们输入的值超过6时,我们删除又进行输入。这样多重复几次。就导致了我们视图上的值与我们获取的值不一致了。这个时候,有机智的小伙伴可能会说:我们使用ref通过节点获取内容。这样视图和输出来的内容不就一致了。不就可以解决了嘛?感觉说的有道理,我们尝试一下:

2.通过ref获取值

我们知道,在uni-app开发小程序;uniapp的ref属性不能用在uniapp的内置组件上面,只能用在自定义组件上面所以我们创建一个组件com-com.vue
子组件<template>	<view >		<view >表彰说明</view>		<textarea 			placeholder="请输入口号内容(最多输入6个字)"			maxlength="6"			ref="vref"     placeholder-			v-model="formPraise.praiseCont"		/>	</view></template>
页面使用<template>	<view >		<com-com ref="comref"></com-com>		<view >			<button type="primary" @tap="gotos">      获取值     </button>		</view>	</view></template><script>import comcom from "./com-com.vue"export default { components:{	'com-com':comcom }, methods: {	gotos(){	console.log('获取值==>',this.$refs.comref.praiseCont)	}, }}</script>

当看完上面这张动态图的时候;我们发现通过ref获取去的值仍然是失败的。为啥视图上显示的值与我们获取的值不一致呢?我们在视图上添加一个view组件。用它显示我们输入的值的内容它的值与textarea绑定的值是一样的。我们康康下面这一个案例也许你就明白了

3.设置maxlength到底发生了什么事?

<template>	<view >		<view >留言内容</view>		<textarea placeholder-			placeholder="请输入口号内容(最多输入6个字)" 			v-model="formPraise.praiseCont" 			maxlength="6"		/>		<view >			{{ formPraise.praiseCont}}		</view>				<view >			<button type="primary" @tap="gotos">获取值</button>		</view>	</view></template><script>export default { data() {	return {	 formPraise:{		praiseCont:''	 }	} }, methods: {	gotos(){		console.log('超出后==>',this.formPraise.praiseCont)	},		 }}</script>

4.抱歉我也不知道maxlength到底发生了什么事

说真的,我不号用语言去描述设置maxlength;它到底发生了什么事情。但是我知道当textarea设置maxlength后,当值只要出现超出并且后一个覆盖了前面的值。就会出现视图上显示的值与获取值不一致。这是我得到的结论.如果各位小伙伴又不一样的看法欢迎说出来,你的观点对我很重要。

5.textarea不设置maxlength会这样嘛?

<template> <view >  <view >留言内容</view>  <textarea placeholder-		placeholder="请输入内容" 		v-model="formPraise.praiseCont" 		/>	<view >	 <button type="primary" @tap="gotos">    获取值   </button>	</view> </view></template><script>export default { data() {  return {   formPraise:{    praiseCont:''   }  } }, methods: {  gotos(){   console.log('超出后==>',this.formPraise.praiseCont)  },		 }}</script>

6.textarea的maxlength默认值是140

我们发现没有设置textarea不设置maxlength时。值仍然会丢失。其实你虽然没有设置maxlength这个属性。但是maxlen......

原文转载:http://www.shaoqun.com/a/871461.html

跨境电商:https://www.ikjzd.com/

执御:https://www.ikjzd.com/w/717.html

易联通:https://www.ikjzd.com/w/1854.html

c88:https://www.ikjzd.com/w/1017


可能很多小伙伴们。看见这个标题后;觉得作者是一个标题党。textarea设置maxlength后,限制用户输入的字符呗!还能怎么样呢?恭喜你,说对了一半。之前我也一直是这样想的。知道今天我写小完程序后自己测试。发现textarea设置maxlength后,并不是我们想的那样简单:它是一个'有故事的组件'我们来看一下这面这一段代码功能:限制textarea的值最多输入6字符,点击按钮
刘军:https://www.ikjzd.com/w/1835
krazy:https://www.ikjzd.com/w/1801
asinseed:https://www.ikjzd.com/w/533
美国夏威夷浪漫之旅出行前的准备 :http://www.30bags.com/a/413633.html
美国夏威夷旅游攻略_线路推荐 :http://www.30bags.com/a/408713.html
美国夏威夷旅游签证的办理流程及准备的材料 :http://www.30bags.com/a/413655.html
美国夏威夷旅游注意事项 :http://www.30bags.com/a/413639.html
领导从背后捏住我的奶 握住她的双乳肆意揉弄:http://lady.shaoqun.com/m/a/247904.html
老公出国了,我因为寂寞成了一个单身邻居的小三:http://lady.shaoqun.com/a/418084.html
万山彩虹海水上乐园要多少费用?2021年7月门票价格:http://www.30bags.com/a/496644.html
亚马逊欧洲站发布消费品的新单价要求,不遵循将从搜索结果中删除!:https://www.ikjzd.com/articles/146573
感情听写,老公出轨女邻居给我带来的伤害:http://lady.shaoqun.com/a/418085.html

没有评论:

发表评论