// 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
});