点击弹出实现模拟百度那样子

<uni-section title="输入框示例" type="line" padding>
	<view class="dialog-box">
		<text class="dialog-text">输入内容:{{ value }}</text>
	</view>
	<button class="button" type="primary" @click="inputDialogToggle">
   <text class="button-text">输入对话框</text></button>
			
</uni-section>
<uni-popup ref="inputDialog" type="dialog">
	<!-- <uni-popup-dialog ref="inputClose"  mode="input" title="输入内容" value="对话框预置提示内容!" placeholder="请输入内容" @input="handleInput" @confirm="dialogInputConfirm"> -->
								
	<uni-popup-dialog ref="inputClose"  title="输入内容" :confirm-text="confirmText" :cancel-text="cancelText" @confirm="confirm" @close="cancel" >
		<view class="result" >
			<input type="text" v-model="searchText" @input="chickCompany" placeholder="请输入公司名称"/>
			<text v-for="(item,index) in result" :key="index" @click="selectCompany(item.content)">{{ item.content }}</text>  
		</view>  
			<!-- 	<button @click="confirm">确定</button>  
			<button @click="cancel">取消</button>  -->
	</uni-popup-dialog>
</uni-popup>
export default {
		data() {
			return {
                redirect:'',
				checkPrivacy:false,
				confirmText: '绑定',  
				cancelText: '去注册',
				searchText:'',
				result:[],


            };
        }

    method:{

            selectCompany(context){
			// 将选中的提示数据回显到搜索框中  
			      this.searchText = context;  	
			},
			
				
			confirm() {  
			      // 确认用户输入的内容  
			      console.log('用户输入的内容为:');  
			      // 关闭对话框  
			      // this.isVisible = false;  
			    },  
			cancel() {  
			      // 取消操作,可以执行相应的逻辑  
			      console.log('用户取消了操作');  
			      // 关闭对话框  
			      // this.isVisible = false;  
			    },
			chickCompany(event){
				console.log("------")
				console.log("event",event.detail.value)
				console.log("this.key",this.searchText)
				
				this.result=null;
				  // 发送搜索请求,获取搜索结果  
				  // 假设搜索结果是一个包含多个对象的数组,每个对象包含一个id和content属性  
				  // 例如: [{id: 1, content: '搜索结果1'}, {id: 2, content: '搜索结果2'}]  
				  // 这里使用mock数据代替真实的搜索结果作为示例  
				  
				  //获取所有公司
				  console.log("this.companyList",this.companyList)
				  const searchResult = [  
				    { id: 1, content: '示例1' },  
				    { id: 2, content: '示例2' },  
				    { id: 3, content: '示例3' }  
				  ];  
					if(this.searchText==1){
						const searchResult = [{ id: 1, content: '示例1' }]
						this.result = searchResult
					}
					if(this.searchText==2){
						const searchResult = [{ id: 2, content: '示例2' }]
						this.result = searchResult
					}
					if(this.searchText == 3){
						const searchResult = [{ id: 3, content: '示例3' }]
					this.result = searchResult  
					}
			},
			inputDialogToggle() {
				this.$refs.inputDialog.open()
			},
			dialogInputConfirm(val) {
				uni.showLoading({
					title: '3秒后会关闭'
				})

				setTimeout(() => {
					uni.hideLoading()
					console.log(val)
					this.value = val
					// 关闭窗口后,恢复默认内容
					this.$refs.inputDialog.close()
				}, 3000)
			},
      
       }
    }

点击后

输入后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现步骤如下: 1. 下载百度地图API的JS文件,并在页面中引入。 2. 在Vue组件中创建一个input元素,用于接收用户输入的地址信息。 3. 在input元素中添加一个点事件,当用户点输入框时,百度地图。 4. 在点事件中创建一个百度地图对象,并设置地图的中心点和缩放级别。 5. 在地图上添加一个标注,用于标记用户选择的位置。 6. 当用户在地图上选择了位置后,获取该位置的经纬度信息,并将其填充到input元素中。 下面是一个简单的示例代码: ```html <template> <div> <input type="text" @click="showMap" v-model="address" placeholder="请输入地址" /> </div> </template> <script> import BMap from 'BMap' export default { data() { return { address: '', map: null, marker: null } }, methods: { showMap() { if (!this.map) { // 创建地图对象 this.map = new BMap.Map("map-container"); // 设置地图中心点和缩放级别 this.map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 添加标注 this.marker = new BMap.Marker(new BMap.Point(116.404, 39.915)); this.map.addOverlay(this.marker); // 监听地图点事件 this.map.addEventListener("click", this.handleMapClick); } // 显示地图 this.$nextTick(() => { this.$dialog.alert({ title: "选择地址", message: '<div id="map-container" style="height: 300px;"></div>', showCancelButton: false, confirmButtonText: "确定" }); }); }, handleMapClick(e) { // 获取点位置的经纬度 const point = e.point; // 更新标注位置 this.marker.setPosition(point); // 获取地址信息 const geoc = new BMap.Geocoder(); geoc.getLocation(point, (rs) => { const addComp = rs.addressComponents; this.address = `${addComp.province}${addComp.city}${addComp.district}${addComp.street}${addComp.streetNumber}`; }); } } } </script> ``` 在上面的代码中,我们创建了一个input元素,并在点事件中一个包含百度地图的窗。在窗中,我们创建了一个地图对象,并在其上添加了一个标注。当用户在地图上选择了位置后,我们通过逆地理编码获取该位置的地址信息,并将其填充到input元素中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值