fillUrls:function(){
varthat=this;
varstrdomin=document.getElementById("searchData").value;
window.status="请求中";
this.$http.jsonp("http://suggestion.baidu.com/su",{//请求参数
params:{
wd:strdomin
},
jsonp:'cb'
}).then(function(res){
window.status="请求结束";
that.autoDisplay(JSON.parse(res.body).s);
},function(){
console.log("error");
});
},
autoDisplay:function(autoStr){
varsearchText=document.getElementById('searchData');
varautoNode=document.getElementById('auto');//缓存对象(弹出框)
varthat=this;
vardocWidth=document.body.clientWidth||document.documentElement.clientWidth;
varpagesZone=document.getElementById('pagesZone');
if(autoStr.length==0){
console.log("false");
autoNode.style.display="none";
returnfalse;
}
autoNode.innerHTML="";
for(vari=0;i"+searchText.value+"");
varnewDivNode=document.createElement('div');
newDivNode.setAttribute("id",i);
autoNode.appendChild(newDivNode);
varwordSpanNode=document.createElement('span');
wordSpanNode.setAttribute('class','suggText');
wordSpanNode.innerHTML=wordNode;
newDivNode.appendChild(wordSpanNode);
varaddNode=document.createElement('span');
addNode.setAttribute('class','addText');
addNode.innerHTML='+';
newDivNode.appendChild(addNode);
//鼠标点击文字上屏并搜索
wordSpanNode.onclick=function(){
this.highlightindex=this.parentNode.getAttribute('id');
varcomText=autoNode.childNodes[this.highlightindex].firstChild.innerText;
autoNode.style.display="none";
this.highlightindex=-1;
searchText.value=comText;
pagesZone.style.display="none";
that.gotoSearch();
};
//鼠标点击文字上屏
addNode.onclick=function(){
this.highlightindex=this.parentNode.getAttribute('id');
varcomText=autoNode.childNodes[this.highlightindex].firstChild.innerText;
autoNode.style.display="none";
this.highlightindex=-1;
searchText.value=comText;
};
//展示
if(autoStr.length>0){
autoNode.style.display="block";
}else{
autoNode.style.display="none";
this.highlightindex=-1;
}
//针对手机竖屏时的显示条数控制
if(docWidth<500&&i>3){
break;
}
}
},
close:function(){
document.getElementById('pagesZone').style.display='none';
},
listenWords:function(event){
console.log("listenkeyup");
varthat=this;
varsearchInput=document.getElementById("searchData");
event=window.event||event;
if(event.keyCode==13){//enter
event.preventDefault();
that.gotoSearch();
}
if(event.keyCode==8){//backspace
console.log(searchInput.value.length);
if(searchInput.value.length==0){
searchInput.blur();
searchInput.focus();
}
}
},
listenInput:function(){
varthat=this;
varsearchInput=document.getElementById("searchData");
varauto=document.getElementById('auto');
varpagesZone=document.getElementById('pagesZone');
vardel=document.getElementsByClassName('del')[0];
if(searchInput.value==null||searchInput.value==""){
auto.innerHTML="";
pagesZone.style.display="none";
del.style.display="none";
auto.style.display="none";
return;
}
pagesZone.style.display="block";
del.style.display="block";
that.fillUrls();
if(this.highlightindex!=-1){
this.highlightindex=-1;
}
},
多引擎搜索很简单,匹配对应参数就好:
window.location.href="https://m.zhihu.com/search?q="+document.getElementById("searchData").value;
百度:https://m.baidu.com/s?word=
谷歌:https://www.google.com/search?q=
必应:https://cn.bing.com/search?q=
知乎:https://m.zhihu.com/search?q=
搜狗:http://wap.sogou.com/web/searchList.jsp?keyword=
京东:http://so.m.jd.com/ware/search.action?keyword=
关键字提示,先通过jsonp请求参数:
varstrdomin=document.getElementById("searchData").value;
window.status="请求中";
this.$http.jsonp("http://suggestion.baidu.com/su",{//请求参数
params:{
wd:strdomin
},
jsonp:'cb'
}).then(function(res){
window.status="请求结束";
that.autoDisplay(JSON.parse(res.body).s);
},function(){
console.log("error");
});
输入框中有文字的时候触发。
其中JSON.parse用于从一个字符串中解析出json对象。s是suggestwords。这里传到autoDisplay的参数即关键字提示。
另外将input元素的autocomplete属性设置为off可以关闭自动提示:
如果所有表单元素都不想使用自动提示功能,只需在表单form上设置autocomplete=off。
最后将获取到的关键字提示放到input下面的节点中即可。
注意:
这里因兼容问题绑定了3个事件,其中listenWords专门针对手机键盘的回车键和回退键:
listenWords:function(event){
console.log("listenkeyup");
varthat=this;
varsearchInput=document.getElementById("searchData");
event=window.event||event;
if(event.keyCode==13){//enter
event.preventDefault();
that.gotoSearch();
}
if(event.keyCode==8){//backspace
console.log(searchInput.value.length);
if(searchInput.value.length==0){
searchInput.blur();
searchInput.focus();
}
}
},
如有更好的方式欢迎讨论。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。