ajax的下拉列表输入框
- $(function(){
- $(".ajaxselect").ajaxselect({valuefrom:'#p1,#p2,#p3', valueto:"#selOneHidden",url:'json.jsp',data:'&p1={0}&p2={1}&p3={2}&kyname=',selectoption:'#showSelectOption'});
- });
- html代码
- <%--showselectoption 是共用的--%>
- <div id="showSelectOption" class="showSelectOption" valueto="selOneHidden">
- <div>
- <ul></ul>
- </div>
- <span class="selectdivclose" title="关闭"> </span>
- </div>
- <input type="text" id="p1" name="" value="p1">
- <input type="text" id="p2" name="" value="p2">
- <input type="text" id="p3" name="" value="p3">
- <input type="text" id="selOneHidden" name="">
- <input type="text" id="selOne" name="tt" class="ajaxselect">
复制代码[代码] 用到的样式
- .ajaxselect{background: url("../images/select.png") right bottom no-repeat;}
- .selectdivclose{background: url("../images/cancel.png") no-repeat;float:right;width:16px;height:16px;cursor:pointer;margin:5px;}
- .showSelectOption{border:1px #eee solid;width:200px;padding:0px;position:fixed;z-index:99999;display:none;background-color:#fff;}
- .showSelectOption ul{list-style:none;margin:0px;padding:0px;}
- .showSelectOption li{padding:5px;list-style:none;text-align:left;}
- .showSelectOption .over{background-color:#eee;}
- .showSelectOption .out{background-color:#fff;}
复制代码[代码] 写的插件代码
- jQuery.fn.extend({
- //opt={valuefrom:'外部传递过来的值DOM的id',callback:选择下拉框后的调用方法,url:'ajax加载url'} url是必须有的
- //针对多值传递过来可以使用这样的方式valuefrom:'#id1,#id2,#id3',url:'xx.do?s={0}&b={1}&c={2}&传递输入框的值paramname=#key' key为 输入框的值s
- ajaxselect:function(opt){
- var option={valuefrom:'',valueto:'',url:'',data:'',selectoption:''}//valuefrom:接收某些值的对象id valueto:选中后值接收对象 data:url后面接的参数如data:'&p1={0}&p2={1}&p3={2}&keyname='
- option=opt;
- var $ajaxselect=$(this);
- var $selectDiv=$(option.selectoption);
- $selectDiv.css({top:($ajaxselect.offset().top+$ajaxselect.height()+4)+"px",left:$ajaxselect.offset().left+"px"});
- $(".selectdivclose").click(function(){$selectDiv.hide();});
- $ajaxselect.change(
- function (){
- $selectDiv.show();
- // $selectDiv.find("li").remove();
- var $this=$(this);
- var valueto=$selectDiv.attr("valueto");
- if($this.val()==""){
- $selectDiv.find("li").remove();
- $selectDiv.hide();
- }else{
- $selectDiv.show();
- }
- var $ul=$selectDiv.find("ul");
- var datastr="";
- //构建ajax传递的url及参数值
- if(option.valuefrom!=""){
- var valuefrom=option.valuefrom;
- var paramestr=new Array();
- var vas=valuefrom.split(",");
- $.each(vas,function(i,v){
- paramestr.push($(v).val());
- });
- //格式化数据到ajaxurl中
- datastr=option.data.format1(paramestr)+$this.val();
- }else{
- datastr=option.data+$this.val();
- }
- $.ajax({url:option.url,data:datastr,dataType:'json',type:'POST',success:function(data){
- $ul.empty();
- //装载数据
- $.each(data,function(i,d){
- $ul.append("<li valueto='"+valueto+"' val='"+d.id+"'>"+d.name+"</li>");
- });
- },error:function(e){},cache:false,complete:function(){
- var $valuetoli=$selectDiv.find("li[valueto]");
- $valuetoli.click(function(){
- var $this=$(this);
- var $sto=$("#"+$this.attr("valueto"));
- $sto.val($this.attr("val"));
- $ajaxselect.val($this.text());
- $selectDiv.hide();
- });
- $valuetoli.hover(function(){
- $(this).removeClass("out").addClass("over");
- },function(){
- $(this).removeClass("over").addClass("out");
- });}
- });
- }
- );
- $ajaxselect.keyup(function(){$ajaxselect.change();});
- // $ajaxselect.focus(function(){$ajaxselect.change();});
- }
- });
复制代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论