`
农村哥们
  • 浏览: 292637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

页面高级搜索功能

阅读更多
概要

   在一个母页面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产品筛选导航菜单,高级搜索

    总的来说,这个项目提供了使用jQuery实现的导航菜单和高级搜索功能,为网站增加交互性和实用性。开发者可以学习如何整合HTML、CSS和JavaScript,利用jQuery的API来创建动态效果和处理用户输入。对于初学者,这是一个...

    高级搜索的JSP源代码SpuerSearch

    5. **`testsearch.htm`**:这可能是一个测试页面,用于模拟用户进行搜索操作,或者用于调试搜索功能。HTML页面通常不包含服务器端代码,而是通过发送HTTP请求到服务器(比如JSP页面)来触发搜索行为。 **JSP源码...

    高级搜索按钮点击后下拉一个高级查询条件框

    在开发Web应用时,"高级搜索按钮点击后下拉一个高级查询条件框"是一个常见的功能需求,它提供了用户更灵活、详细的搜索过滤选项。这个功能的实现涉及到前端交互设计、CSS样式控制、JavaScript或者jQuery的事件处理...

    表单高级搜索2015年3月3日版本

    "表单高级搜索2015年3月3日版本"是一个特定的插件更新,旨在提升网页上搜索功能的效率和用户体验。这次升级引入了一个新的样式类"advsearch",该样式类的主要目的是实现页面上的多个独立搜索区域,每个区域都能根据...

    jQuery和CSS3炫酷高级搜索框设计效果

    在这个主题中,我们将深入探讨如何利用jQuery的动态功能和CSS3的新特性来实现这种高级搜索框。 首先,jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互。在构建高级搜索框时,...

    高级搜索Jquery插件2015年02月28日版本

    在给定的“高级搜索Jquery插件2015年02月28日版本”中,我们关注的是如何在复杂的网页结构中,特别是涉及到嵌套母板页的情况下,实现高效且准确的搜索功能。 母板页(Master Page)是ASP.NET框架中的一种功能,允许...

    advarce高级搜索

    从提供的文件名来看,我们有两张图片(ad2.JPG和ad.JPG),可能是展示高级搜索界面设计的示例,以及一个名为advanced_search.txt的文本文件,可能包含了实现高级搜索功能的代码片段或详细说明。 高级搜索通常包含多...

    阅读web页面,就像它们是本地文档一样。 它包含一个高级搜索功能,可以帮助您检索任务所需的文档

    它包含一个高级搜索功能,可以帮助您检索任务所需的文档。 它可以让你扫描纸质文件,导入电子邮件,甚至下载整个网站。 它允许您向文件添加智能规则,更改大小和重命名它们。 这个伟大的工具还可以让你直接在本地...

    京东高级搜索

    【京东高级搜索】是电商网站中一种常见的功能,它提供了比普通搜索更为精确和复杂的筛选条件,帮助用户在海量商品中快速找到所需的商品。在实现这个功能时,我们需要考虑多个技术层面,包括前端用户界面的设计、后端...

    复杂的搜索页面(asp.net源代码)

    在ASP.NET中构建一个复杂的搜索页面,目的是为了提供用户友好的、功能丰富的搜索体验。这个示例涉及到的关键技术包括数据库设计、数据库连接、界面设计以及不同类型的搜索方法实现。 1. **数据库设计**: - 数据库...

    基于layui实现高级搜索(筛选)功能

    在本文中,我们将深入探讨如何基于layui框架实现高级搜索与筛选功能。layui是一款优秀的前端UI框架,它提供了丰富的组件和简洁的API,使得开发者能够快速构建出美观且响应式的页面。在开发过程中,高级搜索和筛选...

    Django后台输入框联想、自定义页面、搜索框等

    在Django框架中,开发一个功能丰富的后台管理系统是常见的需求,包括自定义页面、输入框联想、搜索功能以及权限管理等。本项目旨在提供一种实现这些功能的方法,以提升用户体验和管理效率。以下是对这些知识点的详细...

    sem高级搜索指令.docx

    高级搜索指令是SEM工作中非常实用的工具,能够帮助专业人士更精确地进行数据分析和竞品研究。以下是一些主要的高级搜索指令及其应用: 1. 双引号:将关键词放入双引号内表示完全匹配搜索。这要求搜索结果中的页面...

    03.一分钟教你社工利器:搜索引擎高级语法-飞哥原创.docx

    以下是一些常见的百度高级搜索语法及其用途: 1. **加号(+)**:用于搜索包含两个或多个关键词的页面,相当于逻辑操作符"AND"。例如,`安全技术+渗透`将返回包含这两个词的页面。 2. **减号(-)**:排除特定...

    Google高级搜索技巧总汇.pdf

    《Google高级搜索技巧总汇》是一份非常有价值的资源,它详细介绍了如何利用Google进行更高效、精准的搜索。Google搜索引擎不仅是全球最受欢迎的搜索工具,也是信息获取的重要平台。以下是一些核心的高级搜索技巧: ...

    ajax仿58同城全国联动无刷新高级搜索

    58同城作为一个知名的分类信息网站,其高级搜索功能让用户能够快速精确地找到所需信息。这个功能通常包括多个筛选条件,如地区、价格范围、发布时间等,用户可以根据这些条件进行组合筛选。在无刷新的情况下实现这一...

Global site tag (gtag.js) - Google Analytics