帮我写一个输入框 可以输入带有百分比和值的两个单选框选择,来改变输入框里面的值 vue
时间: 2024-02-03 21:12:16 浏览: 186
好的,以下是一个简单的Vue组件代码示例,实现了你所描述的功能:
```
<template>
<div>
<input type="text" v-model="inputValue" />
<div>
<input type="radio" id="percentage" value="percentage" v-model="inputType" />
<label for="percentage">百分比</label>
<input type="radio" id="value" value="value" v-model="inputType" />
<label for="value">值</label>
</div>
</div>
</template>
<script>
export default {
data() {
return {
inputType: 'percentage',
inputValue: ''
};
},
watch: {
inputType(newVal, oldVal) {
// 如果从百分比切换到值,将原来的百分比转换为值
if (newVal === 'value' && oldVal === 'percentage') {
this.inputValue = (parseFloat(this.inputValue) / 100).toFixed(2);
}
// 如果从值切换到百分比,将原来的值转换为百分比
if (newVal === 'percentage' && oldVal === 'value') {
this.inputValue = (parseFloat(this.inputValue) * 100).toFixed(0);
}
}
}
};
</script>
```
在上面的代码中,我们使用了一个v-model指令来双向绑定输入框中的值,同时使用了两个单选框来选择输入框的类型:百分比或者值。在组件的data中,我们定义了两个变量:`inputType`和`inputValue`,分别表示输入框的类型和值。在单选框的`v-model`中,我们将其绑定到`inputType`上,这样就能够实现单选框的选择。在输入框中,我们将其`v-model`绑定到`inputValue`上,这样就能够实现输入框的双向绑定。
在组件的`watch`中,我们监听了`inputType`的变化,并根据其变化来更新`inputValue`的值。如果从百分比切换到值,我们将原来的百分比转换为值,并保留两位小数。如果从值切换到百分比,我们将原来的值转换为百分比,并取整。
这样,我们就实现了一个简单的Vue组件,可以根据用户的选择来切换输入框中的值的类型。
阅读全文