鄙人最新作JS爲數據添加標籤解析標籤

// JavaScript Document
/**
*封裝標籤
*解封裝標籤
*[cn]中文[/cn]
*[en]英文[/en]
**/
var judgeTag=function(str,tagName){//判斷是否含有tag標籤
		var _result=false;
		var _reg="\["+tagName+"\][^\[\/"+tagName+"\]]*";
		//alert(_reg);
		//alert(str+' and '+str.match(_reg));
		if(str.match(_reg)){
			_result=true;
			}
		//alert(str+'  '+tagName+'  '+_result);
		return _result;
	}
	

var markTag=function(str,tag){//添加標籤
		//alert('測試');
			var newStr='['+tag+']'+str+'[/'+tag+']';
			return 	newStr;
	}
	
var getValueByTagStr=function(str,tagName){//獲得標籤中的值
		//alert(str);
		//alert(str+' '+tagName);
		if(!judgeTag(str,tagName)){
			throw new Error('錯誤,該字符串不含有該標籤!');
			}
		var regex = "\\["+tagName+"\\]([^\\[]*)\\[/"+ tagName +"\\]";
   		var oRegex = new RegExp(regex,'ig');
		//var reg=eval('/\\['+tagName+'\\](.+?)\\[\\/'+tagName+'\\]/i');
		var m=oRegex.exec(str);
		return m[1];
	}
	
var markTagObj={
		config:{},
		replaceValue:{},//替換函數
		mark:function(data){//打標函數
			//alert(data.length)
			var i,markType,replaceFunc,newVal;
			for(i in data){
				   if (data.hasOwnProperty(i)){
					//alert(data[i]);
					markType=this.config[i];//標籤名或者類型en,cn
					if(!markType){
						throw new Error('請指定標籤名');
						}
						//alert(markType+' and '+data[i]);
						//alert(data[i]);
					/*if(!judgeTag(data[i],markType)){	*/
						newVal=markTag(data[i],markType);//獲得打標後的值
						if(this.replaceValue[i]){//如果存在替換函數則替換
							replaceFunc=this.replaceValue[i];
							replaceFunc(newVal);
							}//if
					//}//如果不含有該標籤
				   }
				}//for
			}//mark
	}//markTag
	
	/**
	調用方法
		var data={
				name:$('input[name=name]').val(),
				subName:$('input[name=subName]').val()
			}
		markTagObj.config={
				name:'en',
				subName:'cn'
			}	
		markTagObj.replaceValue={
				name:function(newVal){
					$('input[name=name]').val(newVal);
					},
				subName:function(netVal){
					$('input[name=subName]').val(newVal);
					}
			}
			
		markTagObj.mark(data);
	**/
	
	var decodeTagObj={//解析標籤
			config:{},
			initData:{},
			decodeMark:function(data){//解析函數
				var i,markType,newVal;
				for(i in data){
					if (data.hasOwnProperty(i)){
						markType=this.config[i];
						if(!markType){
							throw new Error('錯誤,請指定要獲取的標籤');
							}
						//alert(data[i]);
						newVal=getValueByTagStr(data[i],markType);//獲得標籤中的值
						if(this.initData[i]){//如果存在替換函數則替換
							this.initData[i](newVal);
							}
					}//if
					}//for
				}//
		}//decodeTag
	var mergeVal=function(s){
			var _newS='';
			for(var i=0;i<s.length;i++){
				_newS+=s[i];
				}
			//alert(_newS);
			return _newS;
		}
	var mergeForm=function(formList){//合併表單
		for(var i=0;i<formList.length;i++){
				var _sources=formList[i]['source'];
				var _targetFunc=formList[i]['target'];
				_targetFunc(mergeVal(_sources));//調用合併函數
			}//for
		}

調用方法一



// JavaScript Document
$(document).ready(function(){
		var dataObj={
				title:$('input[name=title]').val(),
				titleEn:$('input[name=title]').val(),
				brief:$('textarea[name=brief]').val(),
				briefEn:$('textarea[name=brief]').val()
			}
		decodeTagObj.config={
				title:'cn',
				titleEn:'en',
				brief:'cn',
				briefEn:'en',
			}	
		decodeTagObj.initData={
				title:function(newVal){
					$('input[name=title]').val(newVal);
					},
				titleEn:function(newVal){
					$('input[name=title_en]').val(newVal);
					},
				brief:function(newVal){
					$('textarea[name=brief]').val(newVal);
					$('textarea[name=brief]').text(newVal);
					},
				briefEn:function(newVal){
					$('textarea[name=brief_en]').val(newVal);
					$('textarea[name=brief_en]').text(newVal);
					}
			}
			decodeTagObj.decodeMark(dataObj);//解析標籤
			
			/************************/
});

調用方法二


// JavaScript Document
		/******配置標籤選項*****/
$(document).ready(function(){
	//$('textarea[id=description]').val('[cn]我的一個測試[/cn]')
		markTagObj.config={
				title:'cn',
				titleEn:'en',
				brief:'cn',
				briefEn:'en',
			}	
		markTagObj.replaceValue={
				title:function(newVal){
					$('input[name=title]').val(newVal);
					},
				titleEn:function(newVal){
					$('input[name=title_en]').val(newVal);
					},
				brief:function(newVal){
					$('textarea[name=brief]').val(newVal);
					},
				briefEn:function(newVal){
					$('textarea[name=brief_en]').val(newVal);
					}
			}
			/************************/
			
			$("form").live("submit",function(){
							//alert($('textarea[id=description]').val());
							//alert('測試');
							var doms = $(".require");
							var check_ok = true;
							checkOk=true;
							$.each(doms,function(i, dom){
								if($.trim($(dom).val())==''||$(dom).val()=='0')
								{						
										var title = $(dom).parent().parent().find(".item_title").html();
										if(!title)
										{
											title = '';
										}
										if(title.substr(title.length-1,title.length)==':')
										{
											title = title.substr(0,title.length-1);
										}
										if($(dom).val()=='')
										TIP = LANG['PLEASE_FILL'];
										if($(dom).val()=='0')
										TIP = LANG['PLEASE_SELECT'];						
										alert(TIP+title);
										$(dom).focus();
										check_ok = false;
										checkOk=false;
										return false;						
								}
							});
							//alert(check_ok);
							if(!check_ok){
								return false;
							}
							/***********/
							var dataObj={
											title:$('input[name=title]').val(),
											titleEn:$('input[name=title_en]').val(),
											brief:$('textarea[name=brief]').val(),
											briefEn:$('textarea[name=brief_en]').val()
										}
							/**********/
							/***********/
							markTagObj.mark(dataObj);//添加標籤
							/*alert($('textarea[id=description]').val());
							alert($('textarea[id=description_en]').val());*/
							var argcs=[
											{
												source:[$('input[name=title]').val(),$('input[name=title_en]').val()],
												target:function(newVal){
														$('input[name=title]').val(newVal);
														
													}
											},
											{
												source:[$('textarea[name=brief]').val(),$('textarea[name=brief_en]').val()],
												target:function(newVal){
														$('textarea[name=brief]').val(newVal);
														$('textarea[name=brief]').text(newVal);
													}
											}
										];
							mergeForm(argcs);//合併表單
							/***********/
		});//submit
	
});


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章