概要
在一个母页面A上开启新页面B,在B中填写查询参数,点击查询提交后关闭B页面,同时把B中参数提交到Action中查询数据,显示在母页面A中。
详细实现
实现A页面
(1)定义ArrayList变量存放查询字段名字,定义Hidden项存放查询字段的值。
查询字段名定义
var arrSearchingItem = new Array("vo.productCode","vo.productName");
查询字段值定义
<html:hidden name="ProductForm" property=" vo.productCode " />
<html:hidden name="ProductForm" property=" vo.productName " />
ProductForm是formBean的名字 property是formBean中属性
这样使用struts 就可以把参数值存放在formBean中传递到后台进行操作。
(2)编写JAVASCRIPT函数A
function doOpenSearch(){
var sUrl = renderSearchingAction('./B.do', arrSearchingItem);
fillSearchingItems(document.forms[0], sUrl, arrSearchingItem,405,490);
}
function renderSearchingAction(action, arrSearchingItem) {
if(!action || !arrSearchingItem) {
return;
}
var sParameters = '';
for(var i = 0; i < arrSearchingItem.length; i++) {
var sCond = document.all[arrSearchingItem[i]].value;
if(sCond != '') {
sParameters += (arrSearchingItem[i] + '=' + sCond);
sParameters += '&';
}
}
if(sParameters != '') {
action += ('?' + sParameters.substring(0, sParameters.length - 1));
}
return action;
}
function fillSearchingItems(formt, action, arrSearchingItem, dialogWidth, dialogHeight) {
//set default width and height of dialog.
dialogWidth = (!dialogWidth) ? 406 : dialogWidth;
dialogHeight = (!dialogHeight) ? 452 : dialogHeight;
var arrParameter = new Array();
for(var i = 0; i < arrSearchingItem.length; i++) {
arrParameter[arrSearchingItem[i]] = formt.elements[arrSearchingItem[i]].value;
}
var arrValue = onShowModeDialog(encodeURI(action), encodeURIComponent(arrParameter), dialogWidth, dialogHeight);
//这时运行B页等待关闭取到返回值后再接着执行下面代码
if(arrValue == null) {
return;
}
for(var i = 0; i < arrSearchingItem.length; i++) {
formt.elements[arrSearchingItem[i]].value = arrValue[arrSearchingItem[i]];
}
//submit the current form.
formt.submit();
}
function onShowModeDialog(dialogURL, paramObj,
dialogWidth, dialogHeight,
dialogTop, dialogLeft,
bScrolled, bModal) {
var returnVal = null;
var dialogFeatures = "dialogWidth:" + dialogWidth + "px;"
+ "dialogHeight:" + dialogHeight + "px;"
+ "help:no;"
+ "resizable:no;"
+ "status:yes;";
//dialog's location
if(!dialogTop || !dialogLeft) {
dialogFeatures += "center:yes;";
} else {
dialogFeatures += ("dialogTop:" + dialogTop + ";dialogLeft:" + dialogLeft + ";");
}
//scroll
if(!bScrolled) {
dialogFeatures += "scroll:no;";
} else {
dialogFeatures += "scroll:yes;";
}
if(bModal == null || bModal == undefined || bModal) {
//打开B页面
returnVal = window.showModalDialog(dialogURL, paramObj, dialogFeatures);
} else {
returnVal = window.showModelessDialog(dialogURL, paramObj, dialogFeatures);
}
return returnVal;
}
实现B页面
(1)同样定义相同的ArrayList变量存放查询字段名字,定义可供输入的组件,名字以查询字段名字相同。
查询字段名定义
var arrSearchingItem = new Array("vo.productCode","vo.productName");
可供输入的组件
<html:text name="ProductForm" property="vo.productCode" size="20" />
<html:text name="ProductForm" property="vo.productName" size="20" />
(2)编写JAVASCRIPT函数B
function doEnter() {
var arrValue = collectSearchingItems(document.forms[0], arrSearchingItem);
//设置返回值
window.returnValue = arrValue;
window.close();
//关闭后执行A页的代码
}
function collectSearchingItems(formt, arrSearchingItem) {
var arrValue = new Array();
var eleObj = null;
for(var i = 0; i < arrSearchingItem.length; i++) {
eleObj = formt.elements[arrSearchingItem[i]];
if(eleObj) {
if(eleObj.length && eleObj[0].type == 'radio') {
//don't include select
for(var j = 0; j < eleObj.length; j++) {
if(eleObj[j].checked) {
arrValue[arrSearchingItem[i]] = eleObj[j].value;
}
}
} else {
if(eleObj.type == 'radio') {
if(eleObj.checked) {
arrValue[arrSearchingItem[i]] = eleObj.value;
}
} else {
arrValue[arrSearchingItem[i]] = eleObj.value;
}
}
}
}
return arrValue;
}
总结
JAVASCRIPT函数A
实现内容:
1 提交action的url以及把参数列表传递到B页面.(这里打开B页面用到JAVASRIPT函数window.showModalDialog(URL,dialogArgments.features)这个函数打开B页后等待,直到B页关闭后,它得到个返回值才结束这个函数。
/*
打开一个新窗口
URL为要开启的网页。
dialogArgments为设定好传递给新视窗网页的参数,可以为任意数据类型。
feature 与open()的类似,都是格式方面的设定。调用格式为featureName1:featureValue1:(分号)featureName2:featureValue2:
certer , dialogHeight, dialogLeft,dialogTop,dialogWidth,help(是否显示help按钮,下同),status,resizeable
值=1为yes,0为no.
我认为最重要的是dialogArgments,可以传递值到新的窗口。
第二重要就是 它的返回值 window.returnValue.可以在showModalDialog开启的窗口关闭后前,回传一个任意类型的值*/
)
----à执行B页 等待回应
2 把从B页面返回来的查询参数赋值到A页面的Hidden项中也就是放到formBean中
3 提交A页面
执行函数流程
doOpenSearch()调用renderSearchingAction()完成拼接action的url;
doOpenSearch()调用fillSearchingItems()完成跳转B页面得到返回值,并提交A页;
fillSearchingItems()调用onShowModeDialog()完成打开B页的属性设置以及打开B页;
onShowModeDialog()调用window.showModalDialog()系统打开B页;
JAVASCRIPT函数B
实现内容
1 从页面中的组件中取到值放到AarryList中作为查询参数值返回
2 设置页面返回值
3 关闭页面B
执行函数流程
doEnter()调用collectSearchingItems()完成从B也组件中取到输入值放在AarryList作为返回参数;
分享到:
相关推荐
在IT领域,高级搜索功能是用户界面中一个非常重要的组件,尤其对于信息量庞大的系统而言。这个功能允许用户根据特定的条件和参数进行精确的查询,以获取更准确的搜索结果。标题“关键词高级搜索功能”暗示我们将探讨...
总的来说,这个项目提供了使用jQuery实现的导航菜单和高级搜索功能,为网站增加交互性和实用性。开发者可以学习如何整合HTML、CSS和JavaScript,利用jQuery的API来创建动态效果和处理用户输入。对于初学者,这是一个...
5. **`testsearch.htm`**:这可能是一个测试页面,用于模拟用户进行搜索操作,或者用于调试搜索功能。HTML页面通常不包含服务器端代码,而是通过发送HTTP请求到服务器(比如JSP页面)来触发搜索行为。 **JSP源码...
在开发Web应用时,"高级搜索按钮点击后下拉一个高级查询条件框"是一个常见的功能需求,它提供了用户更灵活、详细的搜索过滤选项。这个功能的实现涉及到前端交互设计、CSS样式控制、JavaScript或者jQuery的事件处理...
"表单高级搜索2015年3月3日版本"是一个特定的插件更新,旨在提升网页上搜索功能的效率和用户体验。这次升级引入了一个新的样式类"advsearch",该样式类的主要目的是实现页面上的多个独立搜索区域,每个区域都能根据...
在这个主题中,我们将深入探讨如何利用jQuery的动态功能和CSS3的新特性来实现这种高级搜索框。 首先,jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互。在构建高级搜索框时,...
在给定的“高级搜索Jquery插件2015年02月28日版本”中,我们关注的是如何在复杂的网页结构中,特别是涉及到嵌套母板页的情况下,实现高效且准确的搜索功能。 母板页(Master Page)是ASP.NET框架中的一种功能,允许...
从提供的文件名来看,我们有两张图片(ad2.JPG和ad.JPG),可能是展示高级搜索界面设计的示例,以及一个名为advanced_search.txt的文本文件,可能包含了实现高级搜索功能的代码片段或详细说明。 高级搜索通常包含多...
它包含一个高级搜索功能,可以帮助您检索任务所需的文档。 它可以让你扫描纸质文件,导入电子邮件,甚至下载整个网站。 它允许您向文件添加智能规则,更改大小和重命名它们。 这个伟大的工具还可以让你直接在本地...
【京东高级搜索】是电商网站中一种常见的功能,它提供了比普通搜索更为精确和复杂的筛选条件,帮助用户在海量商品中快速找到所需的商品。在实现这个功能时,我们需要考虑多个技术层面,包括前端用户界面的设计、后端...
在ASP.NET中构建一个复杂的搜索页面,目的是为了提供用户友好的、功能丰富的搜索体验。这个示例涉及到的关键技术包括数据库设计、数据库连接、界面设计以及不同类型的搜索方法实现。 1. **数据库设计**: - 数据库...
在本文中,我们将深入探讨如何基于layui框架实现高级搜索与筛选功能。layui是一款优秀的前端UI框架,它提供了丰富的组件和简洁的API,使得开发者能够快速构建出美观且响应式的页面。在开发过程中,高级搜索和筛选...
在Django框架中,开发一个功能丰富的后台管理系统是常见的需求,包括自定义页面、输入框联想、搜索功能以及权限管理等。本项目旨在提供一种实现这些功能的方法,以提升用户体验和管理效率。以下是对这些知识点的详细...
高级搜索指令是SEM工作中非常实用的工具,能够帮助专业人士更精确地进行数据分析和竞品研究。以下是一些主要的高级搜索指令及其应用: 1. 双引号:将关键词放入双引号内表示完全匹配搜索。这要求搜索结果中的页面...
以下是一些常见的百度高级搜索语法及其用途: 1. **加号(+)**:用于搜索包含两个或多个关键词的页面,相当于逻辑操作符"AND"。例如,`安全技术+渗透`将返回包含这两个词的页面。 2. **减号(-)**:排除特定...
《Google高级搜索技巧总汇》是一份非常有价值的资源,它详细介绍了如何利用Google进行更高效、精准的搜索。Google搜索引擎不仅是全球最受欢迎的搜索工具,也是信息获取的重要平台。以下是一些核心的高级搜索技巧: ...
58同城作为一个知名的分类信息网站,其高级搜索功能让用户能够快速精确地找到所需信息。这个功能通常包括多个筛选条件,如地区、价格范围、发布时间等,用户可以根据这些条件进行组合筛选。在无刷新的情况下实现这一...