方法一: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();
}
}
})
}
})