javascript - vue 受限组件?
PHP中文网
PHP中文网 2017-04-11 12:16:22
0
6
364

最近从react转vue,尝试限制用户输入,比如输入内容只能为number,否则不改变值,在react里有受限组件所以很容易做到,但是vue里我尝试用react的方法貌似不行。。

通过正则过滤,达到了authorId只能为纯数字的目的,但是在页面上input就算输入不是数字也会显示
尝试用p输出authorId,是只输出符合要求的内容。

问题:不用过滤器,怎么才能使input达到p的效果,只输出符合要求的内容(同步视图和数据)

部分代码

template

    <template>
        <input @input="changeAuthorId" :value="authorId">
        <p>{{authorId}}</p>
    </template>
    
    <script>
        export default {
            store,
            vuex: {
                getters: {
                    authorId: state => state.authorId
                },
                actions
            }
        }
    </script>

mutation

    [types.CHANGE_AUTHORID] (state, value) {
        if (!/^\d*$/.test(value))
            return
        state.authorId = value
    }

目前暂时的解决方案:type="number" 不是通用解决方案(当需求不再是数字的情况)

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(6)
小葫芦

不要在 mutation 立马对值进行过滤,要在 action 中对值进行过滤,并且把过滤后的值重新复制给input

changeAuthorId: function({ dispatch, state }, e){
  var value = e.target.value;
  e.target.value = value.replace(/\D/g, "");   
  dispatch('UPDATE_MESSAGE', e.target.value)
}

demo:

http://jsbin.com/farufa/edit?...

伊谢尔伦

这个你的用计算属性实现吧

巴扎黑

用vue-validate吧,这是官方推荐的手段。

或者自己手写component

洪涛

https://segmentfault.com/a/1190000005004216

巴扎黑

自己监听input事件,然后过滤掉吧

小葫芦

比如input通过v-model绑定到msg,input设置keyup事件监听,在监听器内对输入数据进行校验,不通过就重写msg

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!