Vue
by WILLIAM CORREA
HTML
<div id="app">
<input type="text" v-model="extra"> <input type="number" v-model="maxLength">
<hr>
<input type="text" @keydown="keydown" :maxlength="maxLength">
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
Vue
new Vue({
el: "#app",
props: {
maxLength: {
type: Number,
default: 4
},
expression: {
type: String,
default: '^[\\d]|Backspace|Enter|Arrow.*|Shift|Home|End'
}
},
data:
methods: {
keydown ($event) {
if ((new RegExp(this.expression)).test($event.key)) {
return
}
$event.preventDefault()
}
}
})