主要实现的功能如下:对查询的出来的数据能够直接点击编辑,对于需要编辑的字段根据需要显示文本框、下拉框或者提示不允许修改,编辑完成后回车或者让文本框或下拉框失去焦点即可实现对数据库的更新,文本框或下拉框也随之消失变成普通的文本。
<!--editOnline.jsp-->
<script>
var xmlHttp ;
createXDOM();
function createXDOM() {
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest;
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function EditCells(thisCells,key, int_id)
{
var elements= thisCells.getElementsByTagName("input");
if(elements!=null&&elements.length>0){
originalvalue = elements[0].value;
}else{
originalvalue = thisCells.innerHTML;
}
var CellText= thisCells.innerHTML;
if(CellText.substring(0,1)!="<")
{
if(key=="address_use_type"||key=="address_section_type"){
var url = "<c:out value='${pageContext.request.contextPath}'/>getSelectList.action?tdName="+key+"&resClassName="+frmExecuteQuery.resClassName.value+"&tdId=TextBox1"+thisCells.id+"&tdValue="+thisCells.value+"&int_id="+int_id;
xmlHttp.open("post",url,false);
var param = "";
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(param);
//xmlHttp.onreadyStatechange=getResult(thisCells);
thisCells.innerHTML=xmlHttp.responseText;
document.getElementById('selectBoxTextBox1'+thisCells.id).focus();
}else if(key=="date"||key=="city_id"){
alert("此属性不允许被修改!");
}else{
thisCells.innerHTML="<input type=\"text\" id=\"TextBox1"+thisCells.id+"\" value=\""+thisCells.innerHTML+"\" onblur=\"thisTextBoxOnblur(this,'"+key+"',"+ int_id+")\" onkeydown=\"enterkey(this,'"+key+"',"+ int_id+")\"/>";
document.getElementById("textBox1"+thisCells.id).focus();
}
}
}
function enterkey(thisTextBox,key, int_id){
if( event.keyCode == 13)
{
thisTextBoxOnblur(thisTextBox,key, int_id);
}
}
function enterkey1(selectList,key, int_id){
if( event.keyCode == 13)
{
thisSelectOnblur(selectList,key, int_id);
}
}
function getResult(thisCells)
{
if(xmlHttp.readyState==4) {
thisCells.innerHTML=xmlHttp.responseText;
}
}
function thisTextBoxOnblur(thisTextBox,key, int_id)
{
if(key=="start_address"||key=="end_address"||key=="address_section"||key=="address"||key=="end_ip"){
checkip(thisTextBox,originalvalue);//checkip的代码省略,网上有很多校验Ip的代码
}
if(key=="mask"||key=="mask2"){
var textValue = thisTextBox.value;
if(textValue.match("^[1-9][0-9]*$")==null){
alert("掩码输入不正确,争取格式为XX,如20");
thisTextBox.value=originalvalue;
}
}
var resClassName = document.getElementsByName("resClassName")[0];
var thisCellsID=thisTextBox.id;
thisCellsID=thisCellsID.substring(8);
document.getElementById("HValue").value=thisTextBox.value;
document.getElementById(thisCellsID).innerHTML=document.getElementById("HValue").value;
var url = "<c:out value='${pageContext.request.contextPath}'/>updateData.action?tdName="+key+"&tdValue="+thisTextBox.value+"&int_id="+int_id+"&resClassName="+frmExecuteQuery.resClassName.value;
xmlHttp.open("get",url,false);
var param = "";
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(param);
}
function thisSelectOnblur(selectList,key, int_id)
{
//alert(selectList.sel.value);
var resClassName = document.getElementsByName("resClassName")[0];
var thisCellsID=selectList.id;
thisCellsID=thisCellsID.substring(17);
var url = "<c:out value='${pageContext.request.contextPath}'/>updateData.action?tdName="+key+"&tdValue="+selectList.value+"&int_id="+int_id+"&resClassName="+frmExecuteQuery.resClassName.value;
document.getElementById("HValue").value=selectList.value;
document.getElementById(thisCellsID).innerHTML=document.getElementById("HValue").value;
xmlHttp.open("get",url,false);
var param = "";
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(param);
}
}
</script>
<body>
<ww:form name="frmExecuteQuery" action="" method="post">
<input type="hidden" id="HValue" />
<ww:hidden name="resClassName" />
<%
for (int j = 0; j < indexList.size(); j++) {
NameValue index = (NameValue) indexList.get(j);
String tdValue = resDela.getValue(index.getId())+ "";
String tdName = index.getId() + "";
String css = "";
if (index.getId().equals(fixColumn))
css = "class='fixleft'";
if (!index.getId().equals("int_id")) {
%>
<ww:if test="parentClassName=='IP_ADDRESS'">
<td id=<%=i + "" + j%> <%=css%>
onClick="EditCells(this,'<%=tdName%>',<%=resDela.getValue("int_id")%>)"><%=tdValue%></td>
</ww:if>
<ww:else>
<td <%=css%>><%=tdValue%></td>
</ww:else>
<%
}
}
%>
</ww:form>
</body>
<!--options.jsp-->
<%@page contentType="text/html; charset=GBK"%>
<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<select id="selectBox<c:out value='${tdId }'/>" name='sel' onblur="thisSelectOnblur(this,'<c:out value='${tdName }'/>',<c:out value='${int_id }'/>)" onkeydown="enterkey1(this,'<c:out value='${tdName }'/>',<c:out value='${int_id }'/>)">
<c:forEach items="${list}" var="obj">
<option value="<c:out value='${obj.id}'/>"><c:out value="${obj.name}"/></option>
</c:forEach>
</select>
package com.abc
//import略
public class MyAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {
/*
*getSelectList.action
*查询属性的下拉菜单内容
*/
public String getSelectList()throws Exception{
List list = null;
//获取菜单内容List,代码略
servletRequest.setAttribute("list", list);
servletRequest.setAttribute("int_id", int_id);
return "options";
}
/*
*getSelectList.action
*/
public String updateData() throws Exception{
//更新数据库,代码略
return "online";
}
<xwork>
<include file="webwork-default.xml" />
<!interceptors省略>
<action name="maintain" class="com.abc.MyAction">
<result name="online">editOnline.jsp</result>
<result name="options">options.jsp</result>
</action>
</xwork>
分享到:
相关推荐
### AJAX实例应用初体验:自动保存草稿 #### 背景介绍 随着Web应用程序的发展,用户体验成为衡量一个网站或应用是否成功的重要因素之一。在众多提升用户体验的技术中,AJAX(Asynchronous JavaScript and XML)因其...
AJAX(异步JavaScript和XML)则允许在不刷新整个页面的情况下更新部分网页内容,提高了用户体验。在这个控件中,jQuery和AJAX的结合用于实现表格数据的动态加载、编辑和删除,使得用户可以无需刷新页面就能进行操作...
这个编辑器是在2008年初编写的,设计目的是为了提供一个类似于文本框(TextBox)的便捷用户体验,让用户能够直接在网页上编辑HTML内容。 在线HTML编辑器通常用于网站的内容管理系统(CMS),允许非技术用户通过图形...
它利用jQuery库的强大功能,结合AJAX技术,实现在不刷新整个页面的情况下进行数据的加载、编辑和删除,提升用户体验。本文将深入探讨这个初版的jQuery AJAX表格控件的源码,分析其核心功能和设计思路。 首先,我们...
总之,Ajax 是一种强大的技术,可以显著改善用户的在线体验。通过本书作者 Thomas A. Powell 和技术编辑 Ric Smith 的专业知识和经验分享,《Ajax:The Complete Reference》将为读者提供全面的 Ajax 知识体系,帮助...
描述部分与标题相同,"基于ASP的Ajax+XML简单房产程序 v1.0(适合学习ajax+xml).zip",再次确认了这是一个用于教学目的的房产管理软件,它使用了Ajax技术来增强用户交互体验,同时利用XML处理数据。这个软件的源...
**ExtJS 初体验** ExtJS 是一个强大的JavaScript框架,专为构建富客户端Web应用程序而设计。它提供了丰富的用户界面组件和布局管理,使得开发者能够创建功能丰富的、交互性强的Web应用。本篇文章将带你初步了解...
1. **跨浏览器兼容性**:KindEditor设计之初就考虑到了多平台和多浏览器的支持,能够无缝地在IE6+、Firefox、Chrome、Safari和Opera等主流浏览器上运行,确保用户无论在哪个环境下都能得到一致的编辑体验。...
LTSun Engine AJAX CMS 是一个基于AJAX技术的开源内容管理系统,主要特点是提高了网页的交互性和用户体验。在2009年初,开发者开始研发LTSun 2.0版本,而LTSun 1.8则被广泛应用于生产环境中的内容站点。这个引擎通过...
通过AJAX,网页可以实现异步交互,提升用户体验。它利用JavaScript发送HTTP请求到服务器,获取数据后,再通过JavaScript动态更新页面,无需刷新页面。在这个项目中,可能有一个或多个JavaScript函数负责调用API获取...
这款工具能够帮助IT专业人员检测系统在高负载情况下的响应时间、吞吐量以及资源消耗,确保在实际运行环境中能够提供良好的用户体验。 在"WebLoad初印象.pdf"这份文档中,可能会详细介绍以下几个方面的内容: 1. **...
ASP结合Ajax技术可以实现无刷新交互,提升用户体验。还需要考虑权限控制,比如防止恶意灌水和垃圾信息。 7. **模板引擎与CSS** 使用模板引擎分离业务逻辑和页面展示,使得网站设计更灵活。CSS用于样式控制,提供...
4. **AJAX**:了解如何使用JavaScript的异步请求技术,实现页面局部刷新,提升用户体验。 5. **安全性**:考虑ASP程序的安全性,如防止SQL注入、XSS攻击等,确保系统稳定运行。 【总结】 "晴天ASP电影系统"是一个...
**带Ajax功能的按钮** - **定义**: 在后台进行数据交互的同时,不会导致页面刷新。 - **应用场景**: 需要实时更新数据且不影响用户体验的情况。 ##### 1.7. **简单按钮** - **定义**: 功能相对简单,只负责执行...
- **新理论和技术实现**:包括Ajax技术提升了用户体验,RSS订阅让信息推送更为便捷,云计算提供了强大的后端支持。 - **相关技术**:如社交媒体API,使得数据交换和集成成为可能,Markdown等轻量级标记语言简化了...
8. Ajax技术:学习如何结合ASP.NET AJAX扩展,实现实时无刷新的用户体验,提高网页的响应速度和用户交互性。 9. 错误处理与日志记录:掌握异常处理和日志记录的最佳实践,确保应用程序的稳定性和可维护性。 10. ...
主要功能模块的实现需结合前端和后端技术,如AJAX实现异步通信,提升用户体验。 4. **技术选型**:选用MySQL作为数据库,因其开源、免费、稳定且性能优秀,适合中小型项目。JS作为客户端脚本语言,可以实现丰富的...
作为联想中国推出的 7 大业务之一,联想阳光在线的 Vision 是利用在线服务改善客户使用信息终端的方式,客户可以通过使用联想阳光在线的应用服务不断会用电脑、用好电脑、爱用电脑,更便捷体验互联网的精彩。...
AJAX技术的运用使得页面无需刷新即可更新部分数据,提高了用户体验。IDEA作为开发环境,提供了强大的代码编辑和调试功能,加速了开发进程。 在系统测试环节,功能测试是主要手段,通过模拟用户操作来验证系统功能的...