小编给大家分享一下vue如何设置 input为不可以编辑,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
我用最笨的方法,先实现功能先,用两个input,一个可以编辑,一个不可以编辑,失去焦点后隐藏可以点击的那个,点“编辑”时,显示可以编辑的那个input
<div class="edit-item"> <input type="text" id="group-name" v-model="groupName" class="edit-input" disabled v-show="!isEditGroupName" > <input type="text" id="group-name2" v-model="groupName" class="edit-input" ref="groupName" @input="changeValue" @change="editGroupNameSave(groupInfo.name)" v-show="isEditGroupName" @blur="isEditGroupName = false"> <span @click="editGroupName"><icon-svg name="icon-kaka-compile" icon-></icon-svg></span> </div>
export default { name: 'RightSideBar', props: { }, data () { return { isEditGroupName: false, // 修改群名称 } }, computed: { // 群名称 groupName: { get () { return this.$store.getters.groupSetInfo.name }, set (val) { // 使用vuex中的mutations中定义好的方法来改变 let groupSetInfo = this.$store.getters.groupSetInfo let copyMyinfo = Object.assign({}, groupSetInfo) copyMyinfo.name = val this.$store.dispatch('groupSetInfo', copyMyinfo) } }, }, methods: { changeValue () { let leng = this.validateTextLength(this.groupName) if (leng >= 15) { this.$refs.groupName.maxLength = leng } else { this.$refs.groupName.maxLength = 30 } }, validateTextLength (value) { // 中文、中文标点、全角字符按1长度,英文、英文符号、数字按0.5长度计算 let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/g let mat = value.match(cnReg) let length if (mat) { length = (mat.length + (value.length - mat.length) * 0.5) return length } else { return value.length * 0.5 } }, // 打开编辑 editGroupName () { this.isEditGroupName = true let nickNameInput = document.querySelector('#group-name2') setTimeout(() => { nickNameInput.focus() }, 0) }, // 保存群名修改 editGroupNameSave (data) { }, }, created () { }
看完了这篇文章,相信你对“vue如何设置 input为不可以编辑”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。