JS Bin
// source https://jsbin.com/zuqozelega
Vue.component('coupon', {
template: document.querySelector("#coupon-template"),
data:function(){
return {
coupon: 'FOOBAR',
inValid: false,
message: ''
};
},
methods: {
whenCouponHasBeenEntered:function(){
this.validate();
},
validate: function(){
if(this.coupon=='FOOBAR') {
this.message = '20% off';
}
else
this.message = "Not valid coupon";
}
}
});
new Vue({
el: '#demo'
});<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.12.14/vue.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<script id="coupon-template" type="x-template">
<input type="text" v-model="coupon" v-on="blur:whenCouponHasBeenEntered">
<span class="label label-default" v-text="message"></span>
</script>
<body id="demo">
<coupon></coupon>
<script id="jsbin-javascript">
Vue.component('coupon', {
template: document.querySelector("#coupon-template"),
data:function(){
return {
coupon: 'FOOBAR',
inValid: false,
message: ''
};
},
methods: {
whenCouponHasBeenEntered:function(){
this.validate();
},
validate: function(){
if(this.coupon=='FOOBAR') {
this.message = '20% off';
}
else
this.message = "Not valid coupon";
}
}
});
new Vue({
el: '#demo'
});
</script>
<script id="jsbin-source-javascript" type="text/javascript">Vue.component('coupon', {
template: document.querySelector("#coupon-template"),
data:function(){
return {
coupon: 'FOOBAR',
inValid: false,
message: ''
};
},
methods: {
whenCouponHasBeenEntered:function(){
this.validate();
},
validate: function(){
if(this.coupon=='FOOBAR') {
this.message = '20% off';
}
else
this.message = "Not valid coupon";
}
}
});
new Vue({
el: '#demo'
});</script></body>
</html>