From c2dddeb5529a844e2ba6d19844b56c310d0e09cf Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 6 Dec 2017 18:06:57 +0800 Subject: [PATCH] [bugfix] Filed number type value filter (#386) --- docs/markdown/en-US/field.md | 2 +- docs/markdown/zh-CN/field.md | 2 +- packages/field/index.vue | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/markdown/en-US/field.md b/docs/markdown/en-US/field.md index e7ca0333d..39ec7ff77 100644 --- a/docs/markdown/en-US/field.md +++ b/docs/markdown/en-US/field.md @@ -81,7 +81,7 @@ Filed support all native properties of input tag,such as `maxlength`、`placeh | Attribute | Description | Type | Default | Accepted Values | |-----------|-----------|-----------|-------------|-------------| -| type | Filed type | `String` | `text` | `number` `email`
`textarea` `tel`
`datetime` `date`
`password` `url` | +| type | Filed type | `String` | `text` | `number` `email` `textarea` `tel` `datetime` `date` `password` `url` | | value | Filed value | `String` | - | - | | label | Filed label | `String` | - | - | | disabled | Disable field | `Boolean` | `false` | - | diff --git a/docs/markdown/zh-CN/field.md b/docs/markdown/zh-CN/field.md index 8b0532faf..0fffdab48 100644 --- a/docs/markdown/zh-CN/field.md +++ b/docs/markdown/zh-CN/field.md @@ -83,7 +83,7 @@ Filed 默认支持 Input 标签所有的原生属性,比如 `maxlength`、`pla | 参数 | 说明 | 类型 | 默认值 | 可选值 | |-----------|-----------|-----------|-------------|-------------| -| type | 输入框类型 | `String` | `text` | `number` `email`
`textarea` `tel`
`datetime` `date`
`password` `url` | +| type | 输入框类型 | `String` | `text` | `number` `email` `textarea` `tel` `datetime` `date` `password` `url` | | value | 输入框的值 | `String` | - | - | | label | 输入框标签 | `String` | - | - | | disabled | 是否禁用输入框 | `Boolean` | `false` | - | diff --git a/packages/field/index.vue b/packages/field/index.vue index 3ff22ba5d..48acaa86e 100644 --- a/packages/field/index.vue +++ b/packages/field/index.vue @@ -29,6 +29,7 @@ class="van-field__control" :type="type" :value="value" + @keypress="onKeypress" @input="onInput" @focus="$emit('focus')" @blur="$emit('blur')" @@ -111,6 +112,17 @@ export default { this.onIconClick(); }, + onKeypress(event) { + if (this.type === 'number') { + const { keyCode } = event; + const allowPoint = this.value.indexOf('.') === -1; + const isValidKey = (keyCode >= 48 && keyCode <= 57) || (keyCode === 46 && allowPoint); + if (!isValidKey) { + event.preventDefault(); + } + } + }, + adjustSize() { const el = this.$refs.textarea; el.style.height = 'auto';