vue+element ui实现输入框手动输入以及下拉框选择

 

 

<template>
	<el-form ref="ruleForm" :model="ruleForm" label-width="80px">
		<el-form-item label="名称">
			<el-select
			v-model="ruleForm.tranCode"
			style="width: 312px;"
			ref="valSelect"
			filterable
			@blur="valSelectBlur"
			@focus="valSelectFocus"
			@change="valSelectChange"
			>
				<el-option v-for="item in options" :key="item" :label="item" :value="item">
				</el-option>
			</el-select>
			<el-input v-model="ruleForm.tranname" style="width: 280px;position: absolute;left: 0px;" @blur="valInputBlur" ref="valInput"
			 @focus="valInputFocus"></el-input>
		</el-form-item>
	</el-form>
</template>

<script>
	export default {
		data() {
			return {
				ruleForm: {
					tranname: "",
					tranCode: ''
				},
				options: [],
				optionsAll: ['黄金糕', '双皮奶', '蚵仔煎', '龙须面', '北京烤鸭', '黄金面', '奶煎鸭'],
				inputOneFocus: true,
				valSelectFocusVal: false,
				valInputFocusVal: false,
			}
		},
		watch: {
			"ruleForm.tranname": function(val) {
				var data = [];
				for (var i = 0; i < this.optionsAll.length; i++) {
					if (this.optionsAll[i].indexOf(val) >= 0 || val == 0) {
						data.push(this.optionsAll[i]);
					}
				}
				this.options = data;
				this.$refs.valSelect.focus();
			}
		},
		methods: {
			valSelectFocus() {
				this.valSelectFocusVal = true;
				this.$refs.valInput.focus();
			},
			valSelectBlur() {
				this.valSelectFocusVal = false;
			},
			valSelectChange(val) {
				this.valSelectFocusVal = false;
				this.ruleForm.tranname = val;
			},
			valInputBlur() {
				let that = this;
				that.valInputFocusVal = false;
				if (that.optionsAll.indexOf(that.ruleForm.tranname) >= 0) {
					setTimeout(() => {
						if (that.valSelectFocusVal == false && that.valInputFocusVal == false) {
							console.log("输入值在下拉项中存在");
							that.inputOneFocus = true;
						}
					}, 100)
				}else{
					setTimeout(() => {
						if (that.valSelectFocusVal == false && that.valInputFocusVal == false) {
							console.log("zzz");
							that.inputOneFocus = true;
						}
					}, 500)
				}
			},
			valInputFocus() {
				this.valInputFocusVal = true;
				this.ruleForm.tranCode = this.ruleForm.tranname;
				if(this.inputOneFocus){
					this.inputOneFocus = false;
					var data = [];
					for (var i = 0; i < this.optionsAll.length; i++) {
						if (this.optionsAll[i].indexOf(this.ruleForm.tranname) >= 0 || this.ruleForm.tranname == 0) {
							data.push(this.optionsAll[i]);
						}
					}
					this.options = data;
					setTimeout(() => {
						this.$refs.valSelect.focus();
					}, 200)
				}
			}
		}
	}
</script>

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Element UI中,下框可以通过设置filterable属性为true来实现输入的功能。例如,可以使用以下代码来创建一个可输入的下框: ```html <el-select v-model="form.pcode" clearable filterable placeholder="请选择产品" class="product-input" allow-create> <el-option v-for="(item,index) in arr_product" :key="index" :label="item.label" :value="item.value" /> </el-select> ``` 在这个例子中,设置了filterable属性为true,允许用户在下框中输入内容。用户可以选择框中的选项,也可以自己输入内容。\[2\] 另外,如果你想在输入框失去焦点时获取输入的值,可以使用blur事件。例如: ```javascript productSelect(e) { let value = e.target.value; // 输入框值 if(value) { this.form.pcode = value; // 如果输入框不为空,将输入的值赋给v-model绑定的变量 } } ``` 在这个例子中,当输入框失去焦点时,会触发productSelect方法,获取输入框的值,并将其赋给form.pcode变量。\[1\] 希望这个回答能够帮到你! #### 引用[.reference_title] - *1* *2* [elementui select可下选择输入(不需要点回车,不需要额外的操作)](https://blog.csdn.net/yuanqi3131/article/details/122102029)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue element-ui设置可填可选下框](https://blog.csdn.net/qq_36509946/article/details/128846080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值