鄙人最新作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
	
});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值