HBuild中IOS实时搜索输入中文input触发两次

方法一:VUE中
使用compositionstart和compositionend
通过compositionstart来实现用户正在输入中文时弹出另外的输入框。
在用户选择某个词的时候会触发compositionend事件,此时可利用事件对象获取用户选择的字符以供后续处理。

<input type="text"  placeholder="请输入关键字进行搜索"  
			 :value="searchKey"
 @compositionstart="handleCompositionstart" 
 @compositionend="handleCompositionend" 
 @input="changeSearch">


new Vue({
	el: '#search-input',
	data: {
		searchKey:"",
		inputFlag:false,
		inputTimer:"",
	},
	methods: {
		changeSearch(e){
			DataVue.searchKey = e.target.value;
			if (!this.inputFlag) {
				DataVue.changeSearch();
			}
			
		},
		handleCompositionstart() {
			this.inputFlag = true
		},
		handleCompositionend(e) {
			this.inputFlag = false
			this.changeSearch(e)
		},
	}
})
				

方法二:JS

<div class="searchInput" style="margin-left: 10px;margin-right: 10px;">
	<i class="js-clear_c_name"></i>
	<input id="search-input" class="js-c_name" type="text">
</div>

var $search = document.getElementById('search-input');
$search.addEventListener('input', throttle(function() {
}), false)
mui.plusReady(function() {
	//判断是否属于安卓还是ios
	//isAndroid_ios方法其他地方定义的
	if(isAndroid_ios()){
		//安卓
		$('#search-input').bind('input propertychange', function() {
			console.log("			search();")
			search();
		})
	}else{
		//ios
		var flag = false;
		$('#search-input').on({
			'compositionstart': function() {
				flag = true;
			},
			'compositionend': function() {
				flag = false;
				if(!flag) {
					search();
				}
			},
			'input propertychange': function() {
				if(!flag) {
					search();
				}
			}
		})
	}
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值