/**
* Newtouch Bairn JS Library 0.1
*
* Depands on jQuery.js and newtouch-common.js
* Copyright(c) 2009 Newtouch
*
* xiaohua.ding@newtouch.cn
*
* 本文件中所有的以'_'符号开头的方法被认为是private的方法或属性,不对外部公开的。
* 如果外部使用了以'_'符号开头的方法或属性,一旦出现问题将由使用者自己解决。
*/
Newtouch.message = {
onLoad:function(){
//TODO dosoming before load
},
offLoad:function(){
//TODO dosoming after load
},
/**
* validate
* 默认css依赖 newtouch-common.css
*/
_error:'error',
_fine:'fine',
/**
* 输入框的验证信息
* @param input 验证的输入控件jQuery对象
* @param message 验证后显示的信息
* @param error 验证是否正确[true/false]
*/
validate:function(input,message,error){
var msg = "";
if(error){
msg = this._errorHTML(input,message,this._error);
input.addClass(this._error);
}else{
msg = this._errorHTML(input,message,this._fine);
input.removeClass(this._error);
}
input.parent().find("span." + this._error + " label").replaceWith(msg);
},
_errorHTML:function(input,message,cls){
var msgHTML = "";
return msgHTML;
},
showMsg:function(msg,sucess){
alert(msg);
}
};
Newtouch.Util = {
/**
* 处理URI使之不带'?'和'#'及任何参数
* 如果URI带有'#'在ie下会导致不能提交请求
*
*/
helperUrl:function(url){
var index = url.indexOf("?");
if(index>0){
return url.substring(0,index);
}
var indexSharp = url.indexOf("#");
if(indexSharp>0){
return url.substring(0,indexSharp);
}
return url;
},
/**
* 在action中也可以带上url的形式如下
* requiredpage.jsp.actionname
*/
helperAction:function(action){
var point = action.lastIndexOf(".");
if(point >= 0){
var url = action.substring(0,point);
var _action = action.substring(point+1,action.length);
return {
url:url,
action:_action
}
}else{
var url = this.helperUrl(document.URL);
return {
url:url,
action:action
}
}
},
/**
* 把action作为参数放入到参数列表中。
*/
helperParams:function(params,action){
if(typeof(params) == "string"){
params = this._stringParams(params,action);
}else{
params['_action'] = action;
}
return params;
},
/**
* 处理返回值中的回车换行符号(\n\r)
* @param data 返回的responseText
* @param replacestr 把\n\r替换为指定的字符,默认为
*/
helperResponse:function(data,replacestr){
if(typeof(data)=="object"){
return data;
}
if(replacestr == undefined){
replacestr = "
";
}
while(data.indexOf("\n\r")>0){
data = data.replace("\n\r",replacestr);
}
while(data.indexOf("\n")>0){
data = data.replace("\n",replacestr);
}
while(data.indexOf("\r")>0){
data = data.replace("\r",replacestr);
}
if(data.indexOf("\\")>0){
data = data.replace(/\\/g,"\\\\");
}
return data;
},
/**
* 处理导出的参数只能为String类型。
*/
helperExportParams:function(params,action){
return this._stringParams(params,action);
},
_stringParams:function(params,action){
if(typeof(params) == "string"){
if(params == ""){
params = "_action="+action;
}else{
params += "&_action=" + action;
}
}else if(typeof(params) == "object"){
for(var name in params){
params += name + "=" + params[name] + "&";
}
params += "_action="+action;
}
return params;
},
stringToObject:function(string){
if(string == null || string.length == 0){
return {};
}
var stringArray = string.split("&");
var stringObject = new Object();
for(var i = 0 ;i < stringArray.length ; i++){
var kv = stringArray[i].split("=");
if(kv.length == 1){
continue;
}
stringObject[kv[0]]=kv[1];
}
return stringObject;
}
};
Newtouch.Ajax = {
_requestObject:function(url,params,successCallback,failCallback,syncCall){
return {
async: (syncCall != null && syncCall)? false: true,
url:url,
data:params,
type:'POST',
contentType:'application/x-www-form-urlencoded; charset=utf-8',
dataType:'text',
success:function(data){
data = Newtouch.Util.helperResponse(data);
var response = null;
if(data == ""){
response = {err:null,result:null};
}else{
response = eval("(" + data + ")");
}
if(response.err == null){
successCallback(response.result);
}else{
failCallback(response.err);
}
}
};
},
/**
* 通过FORMID发送请求
* @param formId FORM表单ID
* @param action 后台方法名
*/
sendForm:function(formId,action,successCallback,failCallback,syncCall){
var ac = Newtouch.Util.helperAction(action);
var params = $("#" + formId).formSerialize() + "&_action=" + ac.action;
$.ajax(this._requestObject(ac.url,params,successCallback,failCallback,syncCall));
},
/**
* 通过Params发送请求
* @param valueMap 页面上的值 格式:"{id:id,name:name}"
* @param action 后台方法名
*/
sendParams:function(valueMap,action,successCallback,failCallback,syncCall){
var ac = Newtouch.Util.helperAction(action);
var params = Newtouch.Util.helperParams(valueMap,ac.action);
$.ajax(this._requestObject(ac.url,params,successCallback,failCallback,syncCall));
}
};
Newtouch.Direct = {
/**
* 导出用的方法。
* 手动添加参数
*/
sendParamsExport:function(params,action){
var ac = Newtouch.Util.helperAction(action);
var urlParams = Newtouch.Util.helperExportParams(params,ac.action);
location.href = ac.url + "?" + urlParams;
},
/**
* 导出用的方法,通过form ID传入参数。
*/
sendFormExport:function(formId,action){
var ac = Newtouch.Util.helperAction(action);
var params = Newtouch.Util.helperParams($("#" + formId).formSerialize(),ac.action);
location.href = ac.url + "?" + params;
},
/**
* 直接把数据当做form表单传递。
*/
postDataWithForm : function(action,params){
var divElem = document.createElement("div");
$(divElem).css("display","none");
var form = document.createElement("form");
form.method = "post";
form.action = action;
for(var p in params){
var input = document.createElement("input");
$(input).attr("name",p);
$(input).attr("value",params[p]);
form.appendChild(input);
}
$(divElem).append($(form));
$("body").append($(divElem));
form.submit();
},
/**
* 直接把数据当做form表单传递。
*/
postDataWithWizardForm : function(action,params){
var divElem = document.createElement("div");
$(divElem).css("display","none");
var form = document.createElement("form");
form.method = "post";
form.action = action;
var wizardParams = "&";
for(var p in params){
var input = document.createElement("input");
$(input).attr("name",p);
$(input).attr("value",params[p]);
wizardParams += (p +"=" + params[p] + "&");
form.appendChild(input);
}
var wizardInput = document.createElement("input");
$(wizardInput).attr("name","_wzv");
$(wizardInput).attr("value",wizardParams);
form.appendChild(wizardInput);
$(divElem).append($(form));
$("body").append($(divElem));
form.submit();
}
};