Input add readonly prop & focus、blur events

Input add readonly prop & focus、blur events
This commit is contained in:
梁灏 2016-11-15 10:43:00 +08:00
parent c571d9ec2b
commit 0a48ac45a4
8 changed files with 78 additions and 4 deletions

View file

@ -0,0 +1,21 @@
<template>
</template>
<script>
export default {
props: {
},
data () {
return {
}
},
computed: {
},
methods: {
}
}
</script>

View file

@ -0,0 +1,2 @@
import Cascader from './cascader.vue';
export default Cascader;

View file

@ -9,8 +9,11 @@
:placeholder="placeholder"
:disabled="disabled"
:maxlength="maxlength"
:readonly="readonly"
v-model="value"
@keyup.enter="handleEnter">
@keyup.enter="handleEnter"
@focus="handleFocus"
@blur="handleBlur">
<div :class="[prefixCls + '-group-append']" v-if="append" v-el:append><slot name="append"></slot></div>
</template>
<textarea
@ -22,8 +25,11 @@
:disabled="disabled"
:rows="rows"
:maxlength="maxlength"
:readonly="readonly"
v-model="value"
@keyup.enter="handleEnter">
@keyup.enter="handleEnter"
@focus="handleFocus"
@blur="handleBlur">
</textarea>
</div>
</template>
@ -70,6 +76,10 @@
rows: {
type: Number,
default: 2
},
readonly: {
type: Boolean,
default: false
}
},
data () {
@ -117,6 +127,12 @@
handleIconClick () {
this.$emit('on-click');
},
handleFocus () {
this.$emit('on-focus');
},
handleBlur () {
this.$emit('on-blur');
},
resizeTextarea () {
const autosize = this.autosize;
if (!autosize || this.type !== 'textarea') {

View file

@ -5,6 +5,7 @@ import Badge from './components/badge';
import Breadcrumb from './components/breadcrumb';
import Button from './components/button';
import Card from './components/card';
import Cascader from './components/cascader';
import Checkbox from './components/checkbox';
import Circle from './components/circle';
import Collapse from './components/collapse';
@ -40,6 +41,7 @@ const iview = {
iButton: Button,
ButtonGroup: Button.Group,
Card,
Cascader,
Checkbox,
CheckboxGroup: Checkbox.Group,
Circle,

View file

@ -41,6 +41,7 @@ li + li {
<li><a v-link="'/alert'">Alert</a></li>
<li><a v-link="'/tag'">Tag</a></li>
<li><a v-link="'/input'">Input</a></li>
<li><a v-link="'/cascader'">Cascader</a></li>
</ul>
</nav>
<router-view></router-view>

View file

@ -92,6 +92,11 @@ router.map({
component: function (resolve) {
require(['./routers/tooltip.vue'], resolve);
}
},
'/cascader': {
component: function (resolve) {
require(['./routers/cascader.vue'], resolve);
}
}
});

21
test/routers/cascader.vue Normal file
View file

@ -0,0 +1,21 @@
<template>
</template>
<script>
export default {
props: {
},
data () {
return {
}
},
computed: {
},
methods: {
}
}
</script>

View file

@ -1,5 +1,5 @@
<template>
<i-input icon="ios-clock-outline" style="width:200px;" :value.sync="v" @on-enter="enter" @on-click="iconclick" size="large" placeholder="请输入"></i-input>
<i-input icon="ios-clock-outline" @on-focus="focus" @on-blur="blur" readonly style="width:200px;" :value.sync="v" @on-enter="enter" @on-click="iconclick" size="large" placeholder="请输入"></i-input>
<i-input icon="ios-clock-outline" style="width:200px;" :value.sync="v" @on-enter="enter" placeholder="请输入"></i-input>
<i-input icon="ios-clock-outline" style="width:200px;" :value.sync="v" @on-enter="enter" size="small" placeholder="请输入"></i-input>
<br>
@ -10,7 +10,7 @@
{{ v }}
<br>
<br>
<i-input placeholder="this is something" style="width:200px;" :value.sync="t" type="textarea" :autosize="autosize"></i-input>
<i-input readonly placeholder="this is something" style="width:200px;" :value.sync="t" type="textarea" :autosize="autosize"></i-input>
{{ t }}
<br>
<br>
@ -116,6 +116,12 @@
},
change (val) {
console.log(val)
},
focus () {
this.$Message.info('focus');
},
blur () {
this.$Message.info('blur');
}
}
}