Vue三种获取input值的方法

本文详细讲解了如何在Vue中使用v-model实现表单输入的双向数据绑定,包括`input`和`@keyup.enter`监听器的应用,以及如何结合Vuex管理状态和ref获取表单数据。实例中还涉及了El-Form组件和验证规则的设置,以及在实际场景中刷新缓存的操作。
部署运行你感兴趣的模型镜像

(1)v-model 表单输入绑定

使用v-model创建双向数据绑定, 用来监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
	
	<template>
	    <div>
	        <input class="login-input" type="text"  v-model="username" placeholder="请输入账号">
	        <input class="login-input" type="password" v-model="password" placeholder="请输入密码">
			<div class="login-button" @click="login" type="submit">登陆</div>
	    </div>
	</template>
	<script>
	export default {
       name: 'Login',
        data() {
            return {
                username: '',
                password: ''
            }
        },
        methods: {
            login() {
                   console.log(this.username)
                   console.log(this.password)
            }
        }
    }
	<script/>
	

(2)@input 监听输入框

输入框只要输入的值变化了就会触发 input 调用 search 数据实时获取通过 event.currentTarget.value 获取到
	<template>
	  <div class="class">
	    <div>
	      <input type="text" @keyup.enter="search" @input="search($event)"/>
	    </div>
	  </div>
	</template>
	<script>
    export default {
      name: "search",
      data() {
      },
      methods: {
	        search(event){
	          console.log(event.currentTarget.value)
	        }
      	}
    }
   </script>

(3)ref 获取数据 

这种方式类似于原生DOM,但是ref获取数据更方便

	<template>
	  <div class="class">
	      <input type="text" ref="getValue" />
	      <button @click="subbmitButton">获取表单数据</button>
	  </div>
	</template>
	<script>
    export default {
      name: "page",
      data() {
      },
      methods: {
	        subbmitButton(){
	          console.log(this.$refs.getValue.value)
	        }
      	}
    }
  </script>

实例:======================================================实例====================================================================

<template>
  <div class="user">
    <basic-container>  <!--label-suffix=":" 属性会在label标签的末尾加上该符号 -->
      <el-form :inline="true" ref="refreshRules" :rules="cacheRules" :model="cacheModel" label-width="120px" label-suffix=":">
        <el-form-item label="请输入缓存key" prop="cacheKey">
          <el-input v-model="cacheModel.cacheKey" placeholder="请输入要刷新的缓存key" style="width: 700px;" ref="cacheKeyValue"></el-input>
            &emsp; &emsp; <el-button type="warning" round size="medium" @click="handleRefreshCache()">立即刷新</el-button>
            <el-button type="info" round  size="medium" @click="reset()">清空</el-button>
        </el-form-item>
      </el-form>
    </basic-container>
  </div>
</template>

<script>
import { putObj} from "@/api/pay/cache/redisCache";
import { mapGetters } from "vuex";

export default {
  data() {
    return {
        cacheModel: {
            cacheKey: '',
        },
        cacheRules: {
                cacheKey: [{ required: true, message: '缓存Key不能为空', trigger: 'blur' }]
        },
       
      }
  },
  computed: {
    ...mapGetters(["permissions"]),
  },
  watch: {
    role() {},
  },
  created() {
    this.business_user_add = this.permissions["business_user_add"];
    this.business_user_edit = this.permissions["business_user_edit"];
    this.business_user_del = this.permissions["business_user_del"];
  },
  methods: {
    reset() {
	  this.$refs['refreshRules'] .resetFields()
	},
    handleRefreshCache() {
        this.$refs['refreshRules'].validate(valid => {
           if (!valid) {//如果验证不通过,则不走下面的方法内容
               return false;
           }
            putObj(this.$refs.cacheKeyValue.value).then((response) => {
              let resultCode = response.data.code;
              if (resultCode === 0) {
                this.$message.success("已刷新");
              } else {
                this.$message.error("刷新失败");
              }
            })
            .catch((e) => {
              this.$message.error(e);
            });
       });
    }
  }
}
</script>

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 在 Vue 3 中获取特定 input 元素的Vue 3 中,可以通过 `ref` 属性来获取特定的 DOM 元素或子组件实例。当需要获取某个 `<input>` 元素的时,可以结合模板中的 `ref` 定义以及脚本部分的操作完成这一需求。 以下是具体实现方法: #### HTML 模板部分 在模板中为目标 `<input>` 元素设置一个唯一的 `ref` 名称: ```html <template> <div> <!-- 设置 ref 属性 --> <input type="text" ref="myInput" placeholder="请输入内容..." /> <button @click="getInputValue">获取输入框的</button> </div> </template> ``` #### 脚本逻辑部分 在脚本部分通过 `$refs` 访问该元素并读取其: ```javascript <script> import { ref, onMounted } from "vue"; export default { setup() { const myInput = ref(null); // 创建 ref 变量用于存储 DOM 元素引用 const getInputValue = () => { if (myInput.value) { console.log(myInput.value.value); // 输出 input 元素的 [^1] } }; onMounted(() => { // 如果需要初始化某些操作可以在挂载完成后执行 }); return { myInput, getInputValue, }; }, }; </script> ``` 上述代码展示了如何使用组合式 API (`setup`) 实现对特定 `<input>` 元素获取。如果采用选项式 API,则可以直接通过 `this.$refs.myInput.value` 来访问对应的--- #### 注意事项 - 当使用组合式 API 时,需显式声明 `ref` 并将其赋给对应变量。 - 对于动态生成或者条件渲染的内容,在尝试访问之前应确认 DOM 已经被正确创建并附加到页面上。 --- ### 示例扩展:结合其他插件功能 假如项目中有额外的需求比如格式化用户输入的数据形式,那么还可以考虑引入第三方库辅助完成更复杂的交互行为。例如前面提到过的 **Vue-Masked-Input** 就非常适合用来处理带固定模式约束的情况[^3]。 假设我们希望让用户按照 `(XXX) XXX-XXXX` 这样的电话号码结构填写信息,则可按如下方式调整上面的例子: ```html <template> <div> <VueMaskedInput :mask="(999) 999-9999" ref="maskedInputRef" v-model="value" /> <button @click="logMaskedValue">查看已填入的信息</button> </div> </template> <script> import VueMaskedInput from 'vue-masked-input'; export default { components: { VueMaskedInput }, data() { return { value: "", }; }, methods: { logMaskedValue() { console.log(this.value); }, }, }; </script> ``` 这里不仅实现了基本的功能还加入了更加友好的用户体验设计思路。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值