简体   繁体   English

如何使用VueJs阻止textarea中的某些字符?

[英]How can I block some characters in a textarea with VueJs?

I have a textarea for sending messages and I wanna block emails and site links. 我有一个textarea用于发送消息,我想阻止电子邮件和站点链接。 So when I write an @ or https:// there must be error messages shown, using v-if, but how can I do this? 因此,当我写@https://时必须显示错误消息,使用v-if,但我该怎么做呢? Which functions? 哪个功能?

 new Vue({ el: "#app", data: { message: { content: "" } }, }) 
 body { background: #20262E; padding: 20px; font-family: Helvetica; } #app { background: #fff; border-radius: 4px; padding: 20px; transition: all 0.2s; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div> <textarea v-bind="message" v-model="message.content" cols="30" rows="10"> </textarea> <p v-if="message.content == '@'"> No special characters </p> </div> </div> 

You can check by regex type , for your condition var regex = /(@|https)/g; 您可以通过正则表达式检查,条件var regex = /(@|https)/g; . Also set hasError data for message display control and you can use vue watch for your data changing (message.content) 还设置了用于消息显示控制的hasError数据,您可以使用vue watch来更改数据(message.content)

 new Vue({ el: "#app", data: { message: { content: "" }, hasError: false }, watch: { 'message.content': function(newVal,oldVal) { var regex = /(@|https)/g; this.hasError = newVal.match(regex); } } }) 
 body { background: #20262E; padding: 10px; font-family: Helvetica; } #app { background: #fff; border-radius: 4px; padding: 10px; transition: all 0.2s; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div> <textarea v-bind="message" v-model="message.content" cols="30" rows="5"> </textarea> <p v-if="hasError"> No special characters </p> </div> </div> 

我认为你应该将方法@change或@input添加到textarea,然后使用正则表达式测试所有内容,然后替换它或者你想做的任何事情

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM