提交会报错
来源:3-2 改写搜索框功能--自动完成
CC陈十一
2019-04-23 10:46:37
//search.js
(function($){
'use strict';
function Search($elem,options){
this.$elem=$elem;
this.$options=options;
this.$form=this.$elem.find('.form-search');
this.$input=this.$elem.find('.search-inputbox');
this.$layer=this.$elem.find('.search-layer');
this.$elem.on('click','.search-btn',$.proxy(this.submit,this));
if(this.$options.autocomplete){
this.autocomplete();
}
};
Search.DEFAULTS={
autocomplete:false,
url:'https://suggest.taobao.com/sug?code=utf-8&_ksTS=1555933233907_926&callback=jsonp927&k=1&area=c2c&bucketid=10&q=',
css3:false,
js:false,
animation:'fade'
};
Search.prototype.submit=function(){
if($.trim(this.$input.val())===''){
return false;
}
this.$form.sumbit();
};
Search.prototype.autocomplete=function(){
this.$input
.on('input',$.proxy(this.getData,this))
.on('focus',$.proxy(this.showLayer,this))
.on('click',function(){
return false;
});
this.$layer.showHide(this.options);
$(document).on('click',$.proxy(this.hideLayer,this));
};
Search.prototype.getData=function(){
var self=this;
$.ajax({
url:this.$options.url+$.trim(this.$input.val()),
dataType:'jsonp'
}).done(function(data){
self.$elem.trigger('search-getData',[data,self.$layer]);
}).fail(function(){
self.$elem.trigger('search-noData',[self.$layer]);
});
};
Search.prototype.showLayer=function(){
this.$layer.showHide('show');
};
Search.prototype.hideLayer=function(){
this.$layer.showHide('hide');
};
Search.prototype.getInputVal=function(){
return $.trim(this.$input.val());
};
Search.prototype.setInputVal=function(val){
this.$input.val(removeHtmlTags(val));
function removeHtmlTags(str){
return str.replace(/<(?:[^>'"]|"[^]*"|'[^']*')*>/g,'');
}
};
$.fn.extend({
search: function(option,value) {
return this.each(function() {
var $this=$(this),
search=$this.data('search'),
options = $.extend({}, Search.DEFAULTS, $(this).data(), typeof option==='object'&&option);
// search(this, options);
if(!search){//解决多次调用search问题
$this.data('search',search=new Search($this,options));
}
if(typeof search[option]==='function'){
search[option](value);
}
});
}
});
})(jQuery);
//index.js
var $headersearch=$('#header-search');
var html='',
maxNum=10;
$headersearch.on('search-getData',function(e,data,$layer){
var $this=$(this);
html=createHeaderSearchLayer(data,maxNum);
$layer.html(html);
if(html){
$this.search('showLayer');
}else{
$this.search('hideLayer');
}
}).on('search-noData',function(e,$layer){
$(this).search('hideLayer');
$layer.html('');
}).on('click','.search-layer-item',function(){
console.log('1');
$headersearch.search('setInputVal',$(this).html());
$headersearch.search('submit');
});
$headersearch.search({
autocomplete:true,
css3:true,
js:false,
animation:'fade'
});
function createHeaderSearchLayer(data,maxNum){
var html='',
dataNum=data['result'].length;
if(dataNum===0){
return '';
}
for(var i=0;i<dataNum;i++){
if(i>=maxNum)break;
html+='<li class="search-layer-item">'+data['result'][i][0]+'</li>';
}
return html;
}点击下拉框的时候会报错而且只有输入框的文本会变化,无法自动提交,只能手动点击提交。手动点击提交虽然也会报错,但是仍然可以搜索,很奇怪

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="css/base.css"> <link rel="stylesheet" href="css/index.css"> <link rel="stylesheet" href="css/common.css"> </head> <body> <!-- 顶部部分 --> <div class="nav-site"> <div class="wrap"> <ul class='fl'> <li class='fl'><a href="#" class='nav-site-login'>亲,请登录</a></li> <li class='fl'><a href="#" class='nav-site-signup link'>免费注册</a></li> <li class='fl'><a href="#" class='nav-site-signup link'>手机逛慕多多</a></li> </ul> <ul class='fr'> <li class='fl menu dropdown' data-active='menu'> <a href="#" class='dropdown-toggle link transition'>我的慕多多<i class='dropdown-arrow icon icon-xialajiantouxiao'></i></a> <ul class="dropdown-layer"> <li><a href="#" class='menu-item'>已买到的宝贝</a></li> <li><a href="#" class='menu-item'>我的足迹</a></li> </ul> </li> <li class='fl menu dropdown' data-active='menu'> <a href="#" class='dropdown-toggle link transition'>收藏夹<i class='dropdown-arrow icon icon-04xialajiantou'></i></a> <ul class="dropdown-layer"> <li><a href="#" class='menu-item'>收藏的宝贝</a></li> <li><a href="#" class='menu-item'>收藏的店铺</a></li> </ul> </li> <li class='fl nodropdown'><a href="#" class='commodity link'></a>商品分类</li> <li class='fl menu dropdown' data-active='menu'> <a href="#" class='dropdown-toggle link transition'>卖家中心<i class='dropdown-arrow icon icon-04xialajiantou'></i></a> <ul class="dropdown-layer"> <li><a href="#" class='menu-item'>已卖出的宝贝</a></li> <li><a href="#" class='menu-item'>出售中的宝贝</a></li> <li><a href="#" class='menu-item'>卖家服务市场</a></li> <li><a href="#" class='menu-item'>卖家培训中心</a></li> <li><a href="#" class='menu-item'>体验中心</a></li> </ul> </li> <li class='fl menu dropdown'> <a href="#" class='dropdown-toggle link transition'>联系客服<i class='dropdown-arrow icon icon-04xialajiantou'></i></a> <ul class="dropdown-layer"> <li><a href="#" class='menu-item'>消费者客服</a></li> <li><a href="#" class='menu-item'>卖家客服</a></li> </ul> </li> </ul> </div> </div> <div class="header" id='header-search'> <div class="wrap"> <h1 class='fl'><a class="header-log "></a></h1> <div class="search fl"> <form action="https://s.taobao.com/search" class='form-search'> <input type="text" name='q' class='search-inputbox fl' placeholder="灵魂美食零元抢" autocomplete="off" /> <input type="submit" value='搜索' class='search-btn fl'/> </form> <ul class='search-layer text-ellipsis'> </ul> </div> </div> </div> <script type="text/javascript" src='http://code.jquery.com/jquery-3.3.1.min.js'></script> <script type="text/javascript" src='js/transition.js'></script> <script type="text/javascript" src='js/showHides.js'></script> <script type="text/javascript" src='js/common.js'></script> <script type="text/javascript" src='js/search.js'></script> <!-- <script type="text/javascript" src='js/showhide.js'></script> --> <script type="text/javascript" src='js/index.js'></script> <script type="text/javascript"> </script> </body> </html>
2回答
你好,其实看报错信息就可以看出来哦:

大意是难免的,但是自己不要失去信心哦,要相信自己。
继续加油~
好帮手慕星星
2019-04-23
同学你好,是因为submit单词写了,如下:

b和m位置不对,换一下就可以了。
因为按钮用的是submit类型的,点击默认就会提交,所以可以正常访问。
可以修改测试下,祝学习愉快!
相似问题
回答 1