为了账号安全,请及时绑定邮箱和手机立即绑定

如何向用户输入添加文本 - Vue

如何向用户输入添加文本 - Vue

白猪掌柜的 2022-08-04 09:35:26
我有一个输入,用户可以在其中输入价格。当用户按数字键时,我想在他们键入的任何内容前面加上“£”符号。像这样,但在输入字段中可见,而不仅仅是绑定到数据属性:// empty£1 // first keydown£12£125示例:https://jsfiddle.net/Daniel_Knights/6xn12tj9/6/任何想法如何实现这一目标?尝试了一些事情,但我感到困惑。
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

嗨,丹尼尔,我认为您可能需要将type=“number”更改为文本,以允许您使用非数字值


查看完整回答
反对 回复 2022-08-04
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

这是因为您将输入类型设置为数字。所以你只能使用数字。


但是,如果要强制用户仅输入数字,则可以执行以下操作:


<div id="app">

  <input type="text" :placeholder="placeholderPrice" v-model="price" @keypress="mustNumber"/>

  <div class="price">

    <p v-if="price !== ''">

    </p>

    {{ price }}

  </div>

</div>

new Vue({

  el: "#app",

  data: {

    price: "£",

  },

  methods: {

        inputPrice(e) {

        this.price = `£${e.target.value}`;

    },

    mustNumber($event) {

            let keyCode = $event.keyCode ? $event.keyCode : $keyCode;


            // only allow number and one dot

            if (

                (keyCode < 48 || keyCode > 57) &&

                (keyCode !== 46)

            ) {

                $event.preventDefault();

            }

        }

  }

})


查看完整回答
反对 回复 2022-08-04
?
ITMISS

TA贡献1871条经验 获得超8个赞

您需要屏蔽的输入。例如,您可以使用 https://vuejs-tips.github.io/v-money/ 库


<template>

  <div>

    <money v-model="price" v-bind="money"></money> {{price}}

  </div>

</template>


<script>

  import {Money} from 'v-money'


  export default {

    components: {Money},


    data () {

      return {

        price: 123.45,

        money: {

        decimal: ',',

        thousands: '.',

        prefix: '£ ',

        suffix: '',

        precision: 2,

        masked: false

      }

      }

    }

  }

</script>


查看完整回答
反对 回复 2022-08-04
  • 3 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信