jsp中一些jQuery用法以及struts2标签的使用

2 篇文章 0 订阅
2 篇文章 0 订阅

jsp页面中的初始化方法,类似于flex中的creationComplete方法,是在页面加载完成之后就调用的方法,有两种写法:

第一种:

window.οnlοad=function(){
   //在此进行初始化方法
};

这种方法有个局限性,就是在一个jsp中只能有一个该方法。而且该方法需要在页面的所有东西加载完成之后才运行,包括图片。
还有就是利用jQuery的方法进行初始化方法:

第二种:

$(document).ready(function() {
   //在此进行初始化的方法编写
});

该方法没有数量上的局限性,可以编写多个该方法,而且还有简写形式。而且该方法是在页面的DOM结构绘制完毕后就执行,不必等到加载完毕。

第二种的简写形式:

$(function(){
    //在此进行初始化方法编写
});

在初始化方法中对table进行操作,得到table中的某一列:

$(function() {
	//得到ID为grid的TABLE
	var tab = document.getElementById("grid");
	//得出Table的所有行,rows[i].cells:得到每行的所有列
	var rows = tab.rows;
	for ( var i = 1; i < rows.length; i++) {
	    var plan_count = rows[i].cells[4].innerHTML;//计划数量
	     var fact_count = rows[i].cells[7].getElementsByTagName("input")[0].value;//实际数量
	     if (plan_count == fact_count)//当计划数量和实际数量相等时实际数量不可编辑
		 rows[i].cells[7].getElementsByTagName("input")[0].readOnly = true;//设置只读
	     }
});

利用struts2的标签如何去除Action中的值,前提是这个值在Action中必须有get方法。

<s:property value="OGNL表达式"/>
每次请求action转发回来后,当前页面会有一个valueStack,action里的全部信息都保存在里面,比如你action里有个字段username(提供的有get方法)
则你在<s:property value="username"/>就能直接取到值。如果是对象ognl还可以支持导航:<s:property value="user.username"/>
同时当前页面还保存的有ActionContext(不知道怎么翻译...),跟valueStack一样,也可以直接取值,但是前面要加个#号以区别。
request、application对象都在actionContext里面,可以这么取requst里的值<s:property value="#request.username"/>

 

jQuery的Ajax写法:

$.post(url, {
  '参数1' : a,
  '参数2' : b,
  ...
 },
 function(data, status) {
  //data为Action中传过来的数据,字符串或为html字符串;status为状态,成功为success
  alert("数据:" + data + "\n状态:" + status);
 }
);
其中url为调用的Action的路径(我后台用的是struts2,有用PHP和asp的或jsp的,我这里就不介绍了);紧跟着的其实是一个参数数组,用大括号包起来的数组;然后是回调函数,函数中有连个参数,第一个data为Action中返回的数据,status为返回的状态数据。下面附上Action中的部分代码:

...
HttpServletResponse repon = getHttpResponse();//得到Response对象
try {
	repon.getWriter().write("success");//向response中写入要返回的信息,在此可以拼接html(这个数据就是前面回调函数中的data)
} catch (IOException e) {
	e.printStackTrace();
}

那向response中写入返回信息时,不能转发,转发的话会返回你转发的页面。还有就是有需要字符转义的话可以用一下语句:repon.setCharacterEncoding("UTF-8");写入之后最好进行刷新:repon.getWriter().flush();。

给table中所有的td添加鼠标点击事件:

$(function(){
	$("td[name*='confirm']").click(function() {//获得系统当前时间
	     var curDate = new Date();
<span style="white-space:pre">	</span>})
}
 

 一下再附上一个在js中得到当前时间的函数,格式为(yyyy-mm-dd) 

//得到当前时间字符串(年-月-日)
function CurentTime()
{ 
    var now = new Date();
    var year = now.getFullYear();       //年
    var month = now.getMonth() + 1;     //月
    var day = now.getDate();            //日
    //var hh = now.getHours();            //时
    //var mm = now.getMinutes();          //分
    var clock = year + "-";
    if(month < 10)
        clock += "0";
    clock += month + "-";
    if(day < 10)
        clock += "0";
    clock += day + " ";
   
    //if(hh < 10)
        //clock += "0";
    //clock += hh + ":";
    //if (mm < 10) clock += '0'; 
    //clock += mm; 
    return(clock); 
} 
<pre name="code" class="javascript">//对象转json对象
var jsonstr = {
<span style="white-space:pre">	</span>"XX" : "XX",
	"XX" : "XX"
};
var param = $.toJSON(jsonstr);
//js中得到项目的发布路径
var url = ${pageContext.request.contextPath}
//利用document向表格中动态添加行和列
var cost_table=document.getElementById("表格ID");
var cost_rowObj=cost_table.insertRow(-1);//括号中的是第几行也就是添加的位置,-1为倒数第一行,-2为倒数第二行
var cost_cell1Obj=cost_rowObj.insertCell(-1);
var cost_cell2Obj=cost_rowObj.insertCell(-1);
var cost_cell3Obj=cost_rowObj.insertCell(-1);
var cost_cell4Obj=cost_rowObj.insertCell(-1);//一共添加4列,每列都添加到最后一个
cost_cell1Obj.innerHTML = "<input name='sel_radio' type='checkbox'>";//利用document向列中添加内容
 

下面给出一个小写数字转换为汉字的方法,如100-->壹佰元整:

/*
 * 功能:将货币数字(阿拉伯数字)(小写)转化成中文(大写)
 * 
 * 参数:Num为字符型,小数点之后保留两位,例:Arabia_to_Chinese("1234.06") 说明:1.目前本转换仅支持到 拾亿(元)
 * 位,金额单位为元,不能为万元,最小单位为分 2.不支持负数
 */
function numtochinese(Num) {
	for (i = Num.length - 1; i >= 0; i--) {
		Num = Num.replace(",", "")// 替换数据中的“,”
		Num = Num.replace(" ", "")// 替换数据中的空格
	}

	Num = Num.replace("¥", "")// 替换掉可能出现的¥字符
	if (isNaN(Num)) {
		// 验证输入的字符是否为数字
		//alert("请检查小写金额是否正确");
		return;
	}
	// ---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
	part = String(Num).split(".");
	newchar = "";
	// 小数点前进行转化
	for (i = part[0].length - 1; i >= 0; i--) {
		if (part[0].length > 10) {
			//alert("位数过大,无法计算");
			return "";
		}// 若数量超过拾亿单位,提示
		tmpnewchar = ""
		perchar = part[0].charAt(i);
		switch (perchar) {
		case "0":
			tmpnewchar = "零" + tmpnewchar;
			break;
		case "1":
			tmpnewchar = "壹" + tmpnewchar;
			break;
		case "2":
			tmpnewchar = "贰" + tmpnewchar;
			break;
		case "3":
			tmpnewchar = "叁" + tmpnewchar;
			break;
		case "4":
			tmpnewchar = "肆" + tmpnewchar;
			break;
		case "5":
			tmpnewchar = "伍" + tmpnewchar;
			break;
		case "6":
			tmpnewchar = "陆" + tmpnewchar;
			break;
		case "7":
			tmpnewchar = "柒" + tmpnewchar;
			break;
		case "8":
			tmpnewchar = "捌" + tmpnewchar;
			break;
		case "9":
			tmpnewchar = "玖" + tmpnewchar;
			break;
		}
		switch (part[0].length - i - 1) {
		case 0:
			tmpnewchar = tmpnewchar + "元";
			break;
		case 1:
			if (perchar != 0)
				tmpnewchar = tmpnewchar + "拾";
			break;
		case 2:
			if (perchar != 0)
				tmpnewchar = tmpnewchar + "佰";
			break;
		case 3:
			if (perchar != 0)
				tmpnewchar = tmpnewchar + "仟";
			break;
		case 4:
			tmpnewchar = tmpnewchar + "万";
			break;
		case 5:
			if (perchar != 0)
				tmpnewchar = tmpnewchar + "拾";
			break;
		case 6:
			if (perchar != 0)
				tmpnewchar = tmpnewchar + "佰";
			break;
		case 7:
			if (perchar != 0)
				tmpnewchar = tmpnewchar + "仟";
			break;
		case 8:
			tmpnewchar = tmpnewchar + "亿";
			break;
		case 9:
			tmpnewchar = tmpnewchar + "拾";
			break;
		}
		newchar = tmpnewchar + newchar;
	}
	// 小数点之后进行转化
	if (Num.indexOf(".") != -1) {
		if (part[1].length > 2) {
			//alert("小数点之后只能保留两位,系统将自动截段");
			part[1] = part[1].substr(0, 2)
		}
		for (i = 0; i < part[1].length; i++) {
			tmpnewchar = ""
			perchar = part[1].charAt(i)
			switch (perchar) {
			case "0":
				tmpnewchar = "零" + tmpnewchar;
				break;
			case "1":
				tmpnewchar = "壹" + tmpnewchar;
				break;
			case "2":
				tmpnewchar = "贰" + tmpnewchar;
				break;
			case "3":
				tmpnewchar = "叁" + tmpnewchar;
				break;
			case "4":
				tmpnewchar = "肆" + tmpnewchar;
				break;
			case "5":
				tmpnewchar = "伍" + tmpnewchar;
				break;
			case "6":
				tmpnewchar = "陆" + tmpnewchar;
				break;
			case "7":
				tmpnewchar = "柒" + tmpnewchar;
				break;
			case "8":
				tmpnewchar = "捌" + tmpnewchar;
				break;
			case "9":
				tmpnewchar = "玖" + tmpnewchar;
				break;
			}
			if (i == 0)
				tmpnewchar = tmpnewchar + "角";
			if (i == 1)
				tmpnewchar = tmpnewchar + "分";
			newchar = newchar + tmpnewchar;
		}
	}
	// 替换所有无用汉字
	while (newchar.search("零零") != -1)
		newchar = newchar.replace("零零", "零");
	newchar = newchar.replace("零亿", "亿");
	newchar = newchar.replace("亿万", "亿");
	newchar = newchar.replace("零万", "万");
	newchar = newchar.replace("零元", "元");
	newchar = newchar.replace("零角", "");
	newchar = newchar.replace("零分", "");

	if (newchar.charAt(newchar.length - 1) == "元"
			|| newchar.charAt(newchar.length - 1) == "角")
		newchar = newchar + "整"
	return newchar;
}







 

不断更新...

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值