select下拉框插件jquery.editable-select的用法以及注意事项

项目中考虑到下拉框从后台动态获取的值比较多,用户体验不是很好,就考虑到下拉框既可以下拉选择,也可以手动填写,从网上查了一下,jquery.editable-select这个插件还挺符合就拿来用了。

插件下载地址:http://download.csdn.net/detail/lhx13636332274/9870125

这里先说一下大概用法(这里也是网上找的):

	<select  id= "test" >
              <option value="1111">afgef</option>
         
              <option value="2222">adfge</option>
          
             <option value="3333">adssy</option>
          
             <option value="4444">adsa1</option>
          
             <option value="5555">ace00</option>
         
             <option value="6666">abcd2</option>
         
             <option value="7777">abcd1</option>
         
             <option value="8888">a8181</option>
          </select>
JQuery调用的时候:
$('#test').editableSelect(
     {
       bg_iframe: true, //是否加iframe
       onSelect: function(list_item) {
         //当改变select下拉选项值的时候调用
         $('#ddd2').val(this.text.val());
       },
       case_sensitive: false, // 是否匹配
                              
       items_then_scroll: 10 ,// 设置下拉选项的数目
       isFilter:true //是否根据条件过滤下拉选项
     }
   );
上面就是网上大概的用法,接下来说一下我遇到的问题以及注意事项:

本人前端是个菜鸟,也就大概看了一下插件里面的源码,自己理解了一下(如有错误,欢迎留言指正):

首先会隐藏原来的select框,拼接一个input输入框和一个隐藏域,读取select下所有的数据赋值给<ul>标签下的<li>,

li里的value值就是我们option标签里的value值,li里的text就是option中的文本,这里问题就来了:

首先上代码:

jsp页面:

<label class="header-label" style="margin-left:3%; ">客户名称</label>
	<select id="custselect" style="visibility: hidden;width:241.5px;">
		<option value="" selected="selected" ></option>
			<c:forEach items="${custMap}" var="map">
				<option value="${map.key}" >${map.value}</option>
			</c:forEach>
	</select>
js里面:

$(function () {
   
    $("#custselect").editableSelect({
    	isFilter:true,
    	bg_iframe: true,
    	case_sensitive: false, 
        items_then_scroll: 10  //十条显示滚动条
    });
})


这里要加一个option标签,否则插件生成input框里默认是一个上面循环出来的第一个值,由于我里面的map.key是从后台传过来的字符类型的数据,我在测试的时候,取$("#custselect").val(),无论取哪个下拉框的值,都是0,在网上搜了一下也有遇到这个问题的,但是没有给出很好的解决办法,这里首先说一下,由于插件里是把值放到li标签里了,从页面可以看出来:


注:ul 中的li定义的value会自动转换为int.数值,ie 浏览器下大于int最大值,显示int最大值,其他浏览器显示为0.而且无论你定义什么值,都会转int.默认为1

这就是无论怎么value值取都是0的原因,所以改一下源码就行了,

改过以后,就可以正常的取到$("#custselect").val()的值了,页面上也能看出来:



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值