uniapp 的input组件在@input事件中限制用户可输入数值的范围,出现视图不更新的bug。

这篇具有很好参考价值的文章主要介绍了uniapp 的input组件在@input事件中限制用户可输入数值的范围,出现视图不更新的bug。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在input事件拿到用户输入的值,然后给input组件绑定的值赋值之前,判断用户输入的不能超过最大值,超过的话默认为100,,这个判断和赋值然后视图更新只能触发一次,之后在输入,发现值改了页面但是不更新。我擦了,v-model和:value都试过。都没用,网上描述的这个bug能追溯到19年。看来是个老bug。解决办法就是将赋值代码写在延时器中:

$set也试过 没有用文章来源地址https://www.toymoban.com/news/detail-602385.html

inputfomatter(val) {//input事件函数
				console.log("input事件");
				this.questList[this.questIndex].options[0].value = Number(val.target.value)
				if (val.detail.value.length > 0) { //清除按钮显隐
					this.showClearIcon = true;
				} else {
					this.showClearIcon = false;
				}
				if (Number(val.target.value) < this.questList[this.questIndex].rulerMinValue) { //如果用户输入的值小于最小值,则赋值为最小值
					setTimeout(() => { this.questList[this.questIndex].options[0].value = this.questList[this.questIndex].rulerMinValue }, 0) //不这么写,输入的超过最大值只能重置一次,之后,虽重置了值,但是页面不更新
					// this.questList[this.questIndex].options[0].value = this.questList[this.questIndex].rulerMinValue
				}
				if (Number(val.target.value) > this.questList[this.questIndex].rulerMaxValue) { //如果用户输入的值大于最大值,则赋值为最大值
					setTimeout(() => { this.questList[this.questIndex].options[0].value = this.questList[this.questIndex].rulerMaxValue }, 0)
					// this.questList[this.questIndex].options[0].value = this.questList[this.questIndex].rulerMaxValue
					// this.$set(this.questList[this.questIndex].options[0], 'value', this.questList[this.questIndex].rulerMaxValue)
				}
				setTimeout(() => { this.questList[this.questIndex].options[0].value = this.$toFixed(Number(this.questList[this.questIndex].options[0].value), 2) }, 0)
			},

到了这里,关于uniapp 的input组件在@input事件中限制用户可输入数值的范围,出现视图不更新的bug。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue前端el-input输入 限制输入位数以及输入规则

    前端兼容el-input输入时,仅允许输入负号、数字以及小数点,且限制整数位数以及小数位数,且不允许输入除第一个负号以外的其他符号 1、使用element-ui插件的el-input组件作为页面元素,为其绑定input事件(我这里是在表格里使用slot插入的inpu元素,所以传入参数使用scope传入)

    2024年02月09日
    浏览(42)
  • 限制 el-input 输入 emoji

    快捷键 win+; 或 win+.

    2024年02月12日
    浏览(53)
  • 对input输入框做日期输入限制的几种方法

    用户输入一个日期的时候,我们如何对其做一个输入限制呢?试想一下,如果你输入一个13月份出来,直接弹框提醒你,会觉得冗余界面复杂,我们可以直接清掉这个3。此外,假如我们希望别人输入的日期格式如下: 2024.01.12 时,应该如何来规定呢? QQ录屏20240112102820 首先,

    2024年01月21日
    浏览(39)
  • vue限制input框输入特殊字符和汉字

    在设计vue输入框时,限制input框输入特殊字符和汉字。 一开始参考此博客:https://blog.csdn.net/ks8380/article/details/96478522 进行特殊字符的限制, 代码如下: 此方法可以实现对特殊字符的限制,但当微软自带输入法输入中文时却会自动识别字母,此字母搜索框并未获取且无法正常

    2024年02月11日
    浏览(42)
  • el-input限制输入整数等分析

    input 限制输入在平时的需求比较常见,例如限制输入非数字,限制输入整数,限制输入的小数位数等等。这里分析下各种实现方式。 使用 type 属性为 number :将 el-input 的 type 属性设置为 number ,这将限制用户只能输入数字。然而,这种方式仍然允许输入小数。如果你希望只接

    2024年02月05日
    浏览(53)
  • 【限制输入框值类型】自定义指令el-input输入类型限制,vue和html两个版本

    经常遇到输入框需要限制只能输入数字的, 因为用户很离谱,明显输入数字的地方他非要输入英文或者中文 但是用到UI框架或者自己写方法验证表单比较麻烦 为了一个输入框专门去弄一个验证很麻烦 所以这里就整合了两种自定义指令的方式,更加方便使用 vue版本和 html版本

    2024年02月05日
    浏览(47)
  • element--el-input限制输入为数字且必须大于0

    1. el-input限制输入为数字且必须大于0 此时只能输入大于0的正整数。 2. el-input限制输入为数字 此时只能输入大于等于0的正整数。

    2024年02月16日
    浏览(70)
  • 前端-element输入框-input的一些限制(只能输入正整数和0,或者只能输入数字不可以汉字字母)

    1、input输入框只能输入正整数和0 那你就用  οnkeyup=\\\"value=(value.replace(/D/g,\\\'\\\')==\\\'\\\'?\\\'\\\':parseInt(value))\\\" 2、如果是正数负数0,包括小数都可以 那就用这个οnkeyup=\\\"value=value.replace(/[^-?d.]/g,\\\'\\\')\\\",不能输入汉字和字母 3、不能输入中文,可以输入正数、负数、小数和字母  οnkeyup=\\\"value=v

    2024年02月13日
    浏览(48)
  • el-date-picker组件设置时间范围限制

    如图所示,下图为新增的一个弹层页面,同时有个需求, 日期选择 需要 限制一个月的时间范围 (一月 默认为30天 ): 参数 说明 类型 可选值 默认值 shortcuts 设置快捷选项,需要传入 { text, onClick } 对象用法参考 demo 或下表 Object[] — — disabledDate 设置禁用状态,参数为当前

    2024年01月17日
    浏览(47)
  • 【uniapp】uniapp实现input输入显示数字键盘:

    一、官网文档: input | uni-app官网 二、文档: 三、效果: 【1】number:iPhone原生数字键盘不显示小数点 【2】digit: 【3】digit和inputmode:

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包