www.gusucode.com > 【T6965】响应式互联网网络建设设计类织梦模板(自适应手机端) > 【T6965】响应式互联网网络建设设计类织梦模板(自适应手机端)/skin/js/jquery.itbeing.js

    /**



 * Jquery 扩展库
 *



 * @copyright 一天创想(北京)科技有限公司<service@itbeing.com> 



 * @link http://www.itbeing.com



 * @author kokko<kokkowon@itbeing.com>



 * @version 2011-03-10



 */



/*$.fn.getCursortPosition = function(ctrl){



	ctrl = ctrl||$(this);



	var CaretPos = 0;



	if (document.selection) {



			



	}else if (this.selectionStart || this.selectionStart == '0') {



		



	}



};*/







jQuery.fn.extend({



	//设置定位文字输入框的文字位置



	setCaretPosition:function(ctrl,pos1,pos2){



		textArea = ctrl||$(this);



		if (document.selection) {



			 var rng = textArea[0].createTextRange();



			 rng.collapse(true);



			 rng.moveEnd("character",pos2);



			 rng.moveStart("character",pos1);



			 rng.select();



		} else if (textArea[0].selectionStart || (textArea[0].selectionStart == '0')) {



			textArea[0].selectionStart = pos1;



			textArea[0].selectionEnd = pos2;



		}



		textArea[0].focus();



	},



	//获取定位文字输入框的文字位置



	getCursortPosition:function(ctrl){



		ctrl = ctrl||$(this);



		var CaretPos = 0;



		var val = $(ctrl).val();



		var length = val.length;



		if (document.selection) {



			ctrl.focus ();



			var Sel = document.selection.createRange ();



			Sel.moveStart ('character', -length);



			CaretPos = Sel.text.length;



		}else if (ctrl[0].selectionStart || ctrl[0].selectionStart == '0'){



			CaretPos = ctrl[0].selectionStart;



		}



		return (CaretPos);	



	},



	//微薄的文字输入
	mBlogInput : function(options){



		var settings = {



			searchUrl:'/?c=searcher&a=users&format=li&pagesize=10',



			fontSize:'font-size:12px;line-height:15px;'



		};



		if(options) { $.extend(settings, options); }	



		$(this).itLeftChar(options);



		$(this).live('keyup',function(event){



			var val = $(this).val();



			var $this = $(this);



			var pos1 = $(this).getCursortPosition();



			var pos2 = val.slice(0,pos1).lastIndexOf('@');



			var space1=val.slice(pos2,pos1).lastIndexOf(' ');



			var space2=val.slice(pos2,pos1).lastIndexOf('\n');



			//alert(val+'='+pos1);



			e = window.event;



			$(this).keydown(function(e){



				e=e||window.event;



				if(((e.keyCode=="40" || e.keyCode=="38" || e.keyCode=="13") && $('.atusers').html()!=null) || e.keyCode=="27") {



					return false;



				}



			});



			if(event.keyCode!=38 && event.keyCode!=40 && event.keyCode!=13 && event.keyCode!=27){



				if (pos2!=-1 && space1==-1 && space2==-1) {



					var keyword=val.slice(pos2,pos1);



					keyword=keyword.replace('@','');



            		keyword=keyword?keyword:'';



					if(keyword=='') return;



					$.post(settings.searchUrl,{_keyword:keyword,_sfields:'nickname'},function(msg)



					{



						$('.atusers').remove();



                		$('.atmask').remove();



						var s1='<span>'+val.slice(0,pos2).replace(/\n/g,'<br>')+'</span>';



                		var s2='<span>@</span>';



                		var s3='<span>'+val.slice(pos2+1,val.length).replace(/\n/g,'<br>')+'</span>';



						var fs = settings.fontSize;



						$('#container').after('<div class="atmask" style="'+fs+'width:'+$this.css('width')+';height:'+$this.css('height')+';top:'+($this.offset().top+5)+'px;left:'+($this.offset().left+7)+'px">'+s1+s2+s3+'</div>');



						$('#container').after('<div class="atusers"><div class="attip">想用@提到谁?ESC取消</div><ul>'+msg+'</ul></div>');



						var attop=parseInt($('.atmask').find('span:eq(1)').offset().top)+20-$this.scrollTop();



						if ($.browser.msie) {



							attop=parseInt($('.atmask').find('span:eq(1)').offset().top)+20-$this.scrollTop();



						}



						$('.atusers').css({"left":$('.atmask').find('span:eq(1)').offset().left,"top":attop+'px'});



						$('.atusers > ul > li').mouseover(function(){$('.atusers > ul > li').removeClass();$(this).addClass("cur");});



						$('.atusers > ul > li').mouseout(function(){$('.atusers > ul > li').removeClass();});



						$(".atusers > ul > li").first().addClass("cur");



						$('.atusers > ul > li').click(function(){



							var n1=val.slice(0,pos2);



                    		var n2=val.slice(pos1,val.length);



                    		var newc=n1+"@"+$this.html()+' '+n2;



							$this.val(newc);



							$this.focus();



							$('.atusers').remove();



							$('.atmask').remove();



						});



					});



				}else{



					$('.atusers').remove();



            		$('.atmask').remove();



				}



			}else{



				if (event.keyCode==40) {



					 if ($('.atusers').html()!=null){



					 	var aul=$('.atusers > ul');



                		var n=aul.find('.cur').index();



						if (n==-1 || n>=$('.atusers > ul > li').length-1) {



							n=0;



						} else {



							n=n+1;



						}



						$('.atusers > ul > li').removeClass();



                		$(".atusers > ul > li").eq(n).addClass("cur");



                		$('.atusers > ul').scrollTop((n-6)*$(".atusers > ul > li").eq(n).height());



					 }



				} else if (event.keyCode==38) {



					if ($('.atusers').html()!=null){



						var aul=$('.atusers > ul');



						var n=aul.find('.cur').index();



						if (n==-1) {



							n=0;



						} else if (n==0) {



							n=$('.atusers > ul > li').length-1;



						} else {



							n=n-1;



						}



						$('.atusers > ul > li').removeClass();



						$(".atusers > ul > li").eq(n).addClass("cur");



						$('.atusers > ul').scrollTop((n-6)*$(".atusers > ul > li").eq(n).height());



					}



				} else if (event.keyCode==13) {



					if ($('.atusers').html()!=null){



						var aul=$('.atusers > ul');



						var n=aul.find('.cur').index();



						if (n!=-1) {



							var n1=$this.val().slice(0,pos2);



							var n2=$this.val().slice(pos1,$this.val().length);



							var newc=n1+"@"+$(".atusers > ul > li").eq(n).html()+' '+n2;



							$this.val(newc);



							$this.focus();



						}



						$('.atusers').remove();



						$('.atmask').remove();



					}



				 } else if (event.keyCode==27) {



				 	if ($('.atusers').html()!=null){



						$('.atusers').remove();



						$('.atmask').remove();



					}



				 }



			}



		})



	},



	//判断文字输入剩余字数



	itLeftChar: function(options) {



			var settings = {



				leftNum: 'left_num',



				totalNum:'total_num',



				container:'num_container',



				content:null,



				isWeb:true



			};



			if(options) {



				$.extend(settings, options);



			}	



			//使用短地址代替URL



			$(this).live('keyup',function(){



				$this = $(this);



				var matchURL = new RegExp("((?:http|https|ftp|mms|rtsp)://(&(?=amp;)|[A-Za-z0-9\./=\?%_~@&#:;\+\-])+)","ig");



				//var shorturl = 'http://goo.gl';



				var leftNum = $this.attr(settings.leftNum);



				var totalNum = $this.attr(settings.totalNum);



				var content = $this.val();



				if(settings.content) content = settings.content;



				var cval = content;



				var webnum = cval.match(matchURL);



				if (webnum && settings.isWeb) {



					webnum=webnum.length;



				}else{



					webnum=0;



				}



				cval= cval.replace(matchURL, '');



				var clength = parseInt( cval.length ) + webnum*8;



				leftNum = totalNum-clength;



				if( (leftNum<0) )



				{



					leftNum = 0;



					content = content.substr(0,totalNum);



					$this.val(content);



				}



				$this.attr(settings.leftNum,leftNum);



				//设置



				try{



					$showNumObj = $( $this.attr( settings.container ) );



					$showNumObj.html( clength<=totalNum ?clength : totalNum );



				}catch(e){



					return false;



				}



			})



	},



	//删除



	doRemove:function(options){



		 var settings = {



            action: 'href',	//删除脚本的URL属性字段



			confirm:'您确定删除吗?',



            callback: function(rs){window.location.reload()},



			method: 'POST',		//ajax请求类型



			dataType: 'json',	//ajax请求数据类型



			cache:true		//ajax是否缓存



        };



		if(options) {



            $.extend(settings, options);



        }



		



		$(this).live('click',function(e){



			e.preventDefault();



			$this = $(this);



			var url = urlRequest.setParameter( 'format',settings.dataType,$this.attr( settings.action ) );



			var _confirm = $this.attr( 'confirm' );



			var isSave = true;







			if( typeof _confirm =='undefined' || _confirm=='' || _confirm==null ){



				_confirm = settings.confirm;



			}



			if(_confirm){



				if(itbeing.confirm(_confirm)) 	isSave = true;



				else isSave = false;



			} 



						



			if( isSave ){



				itbeing.ajaxRequest({



					url:url,



					method:settings.method,



					dataType:settings.dataType,



					cache:settings.cache,



					callback:function(rs){



						settings.callback(rs);



					}



				});



			}



		})



	},



	//表单按钮提交



	doSubmit:function(options){



		var settings = {



			dataType:'json',



			filter:function(){return true},



			callback:function(rs){alert(rs.message)},



			form:null,



			action:null,



			data:null



		};



		if(options) {



            $.extend(settings, options);



        }



		



		$(this).live('click',function(e){



			e.preventDefault();



			var $this = $(this);



			var form = $(this).closest('form');



			if(settings.form!=null) form = $(settings.form).closest('form');



			var data = form.serialize();



			if(settings.data!=null) data =  $.extend(data, settings.data);



			var url = form.attr('action');



			if(settings.action!=null) url = settings.action;



			url = urlRequest.setParameter( 'format',settings.dataType,url );







			if(settings.filter()){



				itbeing.ajaxRequest({url:url,method:'POST',dataType:settings.dataType,callback:function(rs){			



					settings.callback(rs);		



				}},data);



			}



		})



	},



	//排序



	setFeildSort:function(){



		$(this).live('click',function(event){



			event.preventDefault();



			field = this.attributes['field'].value;;



			return urlRequest.setSort(field);



		})



	},



	//全选,取消全选
	doCheckAll:function(options){



		var settings = { target:null	};



		if(options) { $.extend(settings, options); }



		var target = ':checkbox';



		if(settings.target != null ) target = settings.target;



		$(this).live('click',function(e){



			if($(this).attr('checked')){



				$(target).attr('checked',true);



			}else{



				$(target).attr('checked',false);



			}



		});



	}



});