在谷歌瀏覽器下vue的@input事件問題


在谷歌瀏覽器下vue的@input事件問題:input輸入中文,在輸入拼音的時候就在觸發(360不這樣)

原文鏈接:https://blog.csdn.net/m0_37817986/article/details/103079249

<input v-on:input="searchOne($event,item.ind)" v-on:compositionstart="flagg=false" v-on:compositionend="flagg=true" autocomplete="off"/>
var app = new Vue({
el: '#app',
data: {
flagg:false
},
  methods: {
searchOne:function(event,ind){
//console.log(this.flagg);
var _this = this;
// setTimeout(function(){
if(this.flagg){
_this.kemuSearch(ind);
}
//因為選詞結束的時候input會比compositionend先一步觸發,此時flag還未調整為true,所以不能觸發到console,故用setTimeout將其優先級滯后。
// },0)

//這個事件是input在360和谷歌兩個效果不一樣,用change只能在失去焦點的時候觸發
},
kemuSearch: function (num) {
var self = this;
this.flag = 0;
var _IsLastLevel = 1;
//這里是表單每次變化的值,可能只能為空時才能去請求
//這里應該是鍵盤實時搜索,鼠標也用到這個方法
var _SearchKey = $("#text" + num).val();
$.ajax({
type: 'POST',
url: "/IncreaseCredit/Subject_GetList",
data: {
IsLastLevel: _IsLastLevel,
SearchKey: _SearchKey
},
dataType: "json",
async:false,//這里要改成同步的,否則沒有查詢完就去干別的了
success: function (msg) {
if (msg.status.code == "1") {
app.list = [];
//list提供一個臨時容器,存請求回來的列表值
for (var i = 0; i < msg.row_data.record.length; i++) {
app.list.push(msg.row_data.record[i]);
}
if(self.list.length>0){
self.flag = 1;//當有值的時候改為1,讓下拉框顯示
}else{
//實時查詢,當沒有值的時候不要顯示空框
$('.out').css({ 'display': 'none'})
}
// for (var i in msg.row_data.record) {
// app.list.push(msg.row_data.record[i]);
// }
//console.log(app.list)
}
},
});

},
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM