智能搜素框功能

这篇博客探讨了如何利用jsp、servlet和ajax技术来构建智能搜索框功能,详细介绍了前端代码的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本功能运用了jsp+servlet+ajax

下面是前端代码。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>百度</title>
<link rel="stylesheet" type="text/css" media="screen" href="search.css" />
<style text/css>
.container{
position: absolute;
top: 50%;
left: 50%;
margin-left: -200px;
margin-top: -50px;
}
.mouseover{
background: #708090;
color: #FFFAFA;
}
.mouseout{
background:#FFFAFA;
color:#000000;
}
</style>
</head>
<body>
<div class="container">
<input type="text" id="keyword" size="50" onkeyup="getMoreContexts()" onblur="keywordblur()"
onfocus="getMoreContexts()"/>
<button width="50px">百度一下</button>
<div id="pop">
<table id="content_table" bgcolor="#fffafa" border="0" cellspacing="0"cellpadding="0">
<tbody id="content_tbody">

</tbody>
</table>
</div>
</div>
</body>
<script type="text/javascript">

function getMoreContexts() {
//1.获得输入框的信息
var content=document.getElementById("keyword");
if(content.value==""){
clearNode();//在撤回input框中的内容时清空数据
return;
}
var xmlHttp=getXMLhttp();
var url="search?keyword="+escape(content.value);
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=callback;
xmlHttp.send(null);
}
//获得xmlHttp对象
function getXMLhttp(){
var xmlHttp;
if(window.XMLHttpRequet){
xmlHttp=new XMLHttpRequest();


}
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
if(!xmlHttp){
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}

}
return xmlHttp;
}
//回调函数
function callback() {
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
var result=xmlHttp.responseText;
var json=eval("("+result+")");
}
}
setcontent(json);
}
//设置table表
function setcontent(contents) {
clearNode();
setLocation();
var size=contents.length;
for(var i=0;i<size;i++){
var nextNode=contents[i];
var tr=document.createElement("tr");
var td=document.createElement("td");
td.setAttribute("border","0");
td.setAttribute("bgcolor","#fffafa");
td.onmousemove=function(){
this.className='mouseover';
};
td.onmouseout=function(){
this.className='mouseout';
};
td.onclick=function(){

};
var text=document.createTextNode(nextNode);
td.appendChild(text);
tr.appendChild(td);
var tdbody=document.getElementById("content_tbody");
tdbody.appendChild(tr);
}
}
//对table表中的数据进行清除
function clearNode(){
var tbody=document.getElementById("content_tbody");
var size=tbody.childNodes.length;
for(var i=size-1;i>=0;i--){
tbody.removeChild(tbody.childNodes[i]);
}
document.getElementById("content_table").style.border="none";
}
//失去焦点后清空数据
function keywordblur(){
clearNode();
}
//设置table表格的样式
function setLocation(){
var inp=document.getElementById("keyword");
var width=inp.offsetWidth;
var left=inp["offsetLeft"];
var top=inp["offsetTop"]+inp.offsetHeight;
var dtable=document.getElementById("pop");
pop.style.border="black 1px solid";
pop.style.width=width+"px";
pop.style.left=left+"px";
pop.style.top=top+"px";
document.getElementById("content_table").style.width=width+"px";
}
</Script>
</html>

要在前端表格中实现自定义功能,可以通过多种方式完成。以下是基于常见架和技术栈的解决方案: ### 使用 iView (Ant Design Vue) 实现表头中的模糊索 如果使用的是 `iView` 或类似的 UI 库,可以在表格列 (`columns`) 中通过 `renderHeader` 自定义渲染表头内容。以下是一个完整的示例代码片段[^2]: ```javascript const columns = [ { title: '名称', key: 'name', renderHeader: (h, params) => { return h('div', [ params.column.title, h('Input', { props: { clearable: true, size: 'small' }, style: { marginLeft: '10px', width: '100px' }, on: { 'on-change': (event) => { this.keyword = event.target.value; this.filterTableData(); } } }) ]); } }, { title: '年龄', key: 'age' }, { title: '地址', key: 'address' } ]; methods: { filterTableData() { // 基于 keyword 进行过滤操作 this.filteredData = this.originData.filter(item => item.name.includes(this.keyword) ); } } ``` 此代码实现了在表头添加输入功能,并监听输入的变化来更新表格数据。 --- ### 使用原生 HTML/CSS/JavaScript 实现简单 如果不依赖任何第三方库,也可以通过纯 JavaScript 来实现简单的功能。下面是一段基础代码示例[^3]: #### HTML 部分 ```html <input type="text" id="searchBox" placeholder="请输入关键词"> <table> <thead> <tr><th>姓名</th><th>年龄</th></tr> </thead> <tbody id="dataTable"> <tr><td>张三</td><td>25</td></tr> <tr><td>李四</td><td>30</td></tr> <tr><td>王五</td><td>28</td></tr> </tbody> </table> ``` #### JavaScript 部分 ```javascript document.querySelector('#searchBox').addEventListener('input', function () { const searchValue = this.value.toLowerCase(); const rows = document.querySelectorAll('#dataTable tr'); rows.forEach(row => { const nameCell = row.cells[0].textContent.toLowerCase(); // 获取第一列的内容 if (nameCell.includes(searchValue)) { row.style.display = ''; // 显示符合条件的行 } else { row.style.display = 'none'; // 隐藏不符合条件的行 } }); }); ``` 这段代码展示了如何通过监听输入的 `input` 事件实时过滤表格中的数据。 --- ### 使用 Vue.js 和 Element Plus 实现复杂场景下的功能 对于更复杂的业务需求,比如需要支持多个字段联合查询或者动态加载数据的情况,可以借助 Vue.js 结合 Element Plus 组件库来构建高级功能[^4]。 #### 数据模型初始化 ```javascript <script setup> import { ref } from 'vue'; // 初始化数据源 const tableData = ref([ { name: '张三', age: 25, address: '北京' }, { name: '李四', age: 30, address: '上海' }, { name: '王五', age: 28, address: '广州' } ]); // 索关键字 const keyword = ref(''); // 筛选后的数据 const filteredData = computed(() => { return tableData.value.filter(item => Object.values(item).some(value => String(value).toLowerCase().includes(keyword.value.toLowerCase()) ) ); }); </script> ``` #### 页面模板部分 ```html <template> <el-input v-model="keyword" placeholder="请输入索词"></el-input> <el-table :data="filteredData" border stripe> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </template> ``` 以上代码利用了 Vue 的响应式特性以及计算属性自动处理数据筛选逻辑。 --- ### 总结 无论是采用轻量级方案还是依托现代架开发,核心思路都是围绕 **绑定输入值到变量 -> 动态过滤数据 -> 更新视图** 展开。具体技术选型需根据项目实际环境决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值