国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于jquery的選擇標簽至文本域效果,可多選/可過濾重復/可限制個數的實現代碼

2019-11-21 00:08:29
字體:
來源:轉載
供稿:網友
暫時沒有對手動輸入的做判斷, 需要的話, 可自行在keyup及change事件中添加相關判斷.
相關說明及調用方法,請參見代碼中的注釋.
演示及代碼:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

復制代碼 代碼如下:

;(function(){
$.fn.extend({
iSelectTags:function(options){
var iset={
name:'.tagsbox',//表單或class或id名
drop:$('#dropbox'),//彈出框定位
pseudoClass:$('#dropbox>p>a'),//可選擇的標簽定位
close:$('em.close'),//關閉按鈕定位
separator:',',//標簽間分隔符,建議使用英文逗號
maxCount:10 //默認限制個數,也可以設置表單的data-count值覆蓋默認值
}
options = options || {};
$.extend(iset, options);

var _input=$(iset.name);
var _inputVal=_input.val();
var _arr=new Array(); //存放標簽的數組
var _left=_input.offset().left; //左絕對距離
var _top=_input.offset().top+_input.outerHeight(); //上絕對距離,此處要加上表單的高度
var _dropW=_input.outerWidth()-parseInt(_input.css('border-left-width'))-parseInt(_input.css('border-right-width'))-parseInt(iset.drop.css('paddingLeft'))-parseInt(iset.drop.css('paddingRight'));
iset.drop.css({'position':'absolute','left':_left+'px','top':_top+'px','width':_dropW+'px'});
//彈出框的寬度,此處計算的是與表單實際寬度相等的.也可以直接在樣式中定義.
var _txt=null;
var _maxCount=parseInt(_input.attr('data-count'));//限制選擇個數
if(isNaN(_maxCount)){
_maxCount=iset.maxCount
}

_input.click(function(){
iset.drop.show();
iset.drop.bgiframe();//調用bgiframe插件,解決ie6下select的z-index無限大問題
}).bind('keyup change',function(){
//可以在此處擴展手動輸入標簽情況下的相關判斷
//if語句可避免清空重新選擇時第一個字符為逗號
if ($(this).val() == '') {
_arr = new Array();
}else {
_arr = $(this).val().split(iset.separator);//當用戶手動刪除或修改標簽值后更新標簽值
}
});

$(document).click(function(e){
//點擊非彈出框區域時關閉彈出框
//下面的 if語句是用來判斷傳入的是class還是id
if(iset.name.charAt(0)=='#'){
if(e.target.id!=iset.name.substring(1)){
iset.drop.hide();
}
}else if(iset.name.charAt(0)=='.'){
if(e.target.className!=iset.name.substring(1)){
iset.drop.hide();
}
}
});

iset.drop.click(function(e){
//阻止彈出框區域默認事件
e.stopPropagation();
});

iset.pseudoClass.click(function(){
//標簽選擇
_txt=$(this).text();
//下面的$.inArray是用來判斷是否重復
//若想反饋重復提示或走出限制個數提示,可改進下面的if語句
if(($.inArray(_txt,_arr)==-1) && (_arr.length<_maxCount )){
_arr.push(_txt);
_inputVal=_arr.join(iset.separator);
_input.val(_inputVal);
}

});
//關閉按鈕
iset.close.click(function(){
iset.drop.hide();
});
}
});
})(jQuery);

原文發布于Mr.Think的博客:http://mrthink.net/jquery-plugin-iselecttags/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元谋县| 邳州市| 岳阳市| 呼图壁县| 赤峰市| 广河县| 响水县| 秀山| 枣庄市| 梁平县| 确山县| 沙雅县| 伊春市| 抚松县| 融水| 伊宁县| 娱乐| 文昌市| 龙门县| 全椒县| 寿阳县| 亚东县| 郴州市| 区。| 岱山县| 阳原县| 衡山县| 图木舒克市| 康乐县| 崇仁县| 水富县| 华安县| 双鸭山市| 徐汇区| 谢通门县| 仙桃市| 台东市| 泰顺县| 嵩明县| 托里县| 古蔺县|