前端页面的搜索功能的实现

<input type="text" id="campus" class="layui-input" onkeyup="ck(this.value);" placeholder="请输入要查找的英语屋">//输入触发框


<div class="layui-inline" id="campus">
				<label class="layui-form-label">#(i18n.get('勾选校区'))</label>
				<div class="layui-input-block layui-form" id="cam" lay-filter="cam">
//这里是渲染的地方
				    #if(sysAccount.id)
					    #set(sysAccountCampusIds = CampusKit.findCampusIdsByAccount(sysAccount))
				    #else
					    #set(sysAccountCampusIds = "")
				    #end
					#for(x : CampusKit.findListByAccount(loginAccount))
						<input type='checkbox' value="#(x.id)" name='campus' 
						#(sysAccountCampusIds.contains(x.id.toString()) ? 'checked="checked"':'')
						title="#(x.campusName)" id='campusBox#(x.id)'>
					#end
				</div>
			</div>

//模板数据
//因为这块用到了layui的语句和jfinal的语句,所以需要把layui的#用jfinal的#让layui当作普通字符串输出
<script type="text/html" id="searchText">
  #for(x : CampusKit.findListByAccount(loginAccount))//jfinal的语句,循环
      <!-- 查找出要查的数 -->
        {{#("#")  if(isContains("#(x.campusName)",d.val)){ }}//这里用到了layui的语句和jfinal的语句结合,#(x.campusName) jfinal 的语句,{{#("#")  if(isContains("#(x.campusName)",d.val)){ }}中的d.val因为if用的是layui的语句,所以直接写就可以,一般都是{{d.val}}这样写

                <input type='checkbox' value="#(x.id)" name='campus' 
                #(sysAccountCampusIds.contains(x.id.toString()) ? 'checked="checked"':'')
                title="#(x.campusName)" id='campusBox#(x.id)'>

        {{#("#") } }}


    <!-- 保留原来数据,原来有的选怎的数据显示出来,否则保存的时候会把原来的删除的,所以把原来的保存下来-->
            {{#("#") if(d.isShow != null && d.isShow.length > 0){ }}
                  #if(sysAccountCampusIds.contains(x.id.toString()))
                        <input type='checkbox' value="#(x.id)" name='campus' 
                            #(sysAccountCampusIds.contains(x.id.toString()) ? 'checked="checked"':'')
                            title="#(x.campusName)" id='campusBox#(x.id)'>
                  #end
            {{#("#") } }}
  #end
</script>

//str字符串是否包含substr字符串
function isContains(str, substr) {
    return str.indexOf(substr) >= 0;
}

//layui模板的写法
var getTpl = searchText.innerHTML;//写到js方法外边这样只加载一次,不用每次都加载,速度快
/* 前端页面的搜索 */
 function ck(campusName){
    //渲染模版
    layui.laytpl(getTpl).render({"val":campusName,"isShow":campusName}, //json值,isShouw为了那边做出判断使用
            function(html){
        $("#cam").html(html);//jquery把模板加载到div   id是cam中<div id="cam"></div>
        console.log(html);
        layui.form.render(null,"cam"); //更新这个容器中的页面
    });
      
}

 

 

 

 

 

  • 8
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,实现一个基本的搜索功能需要前端和后端的配合。下面是一个简单的实现过程: 前端实现: 1. 在 HTML 中添加搜索框的输入框和搜索按钮: ```html <form> <input type="text" id="search-input" placeholder="请输入搜索内容"> <button type="submit" id="search-btn">搜索</button> </form> ``` 2. 使用 JavaScript 监听搜索按钮的点击事件,在点击时获取输入框中的搜索内容,并将内容发送给后端: ```javascript const searchBtn = document.getElementById('search-btn'); searchBtn.addEventListener('click', function(event) { event.preventDefault(); // 阻止表单默认提交事件 const searchInput = document.getElementById('search-input'); const searchContent = searchInput.value; // 发送搜索请求给后端 fetch(`/search?content=${searchContent}`) .then(response => response.json()) .then(data => { // 处理后端返回的搜索结果 }) .catch(error => console.error(error)); }); ``` 后端实现: 1. 在后端路由中添加搜索路由,处理前端发送的搜索请求: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/search', methods=['GET']) def search(): search_content = request.args.get('content') # 在数据库中进行搜索 # 返回搜索结果 return jsonify(search_results) ``` 2. 在后端中连接数据库,实现具体的搜索功能。这里以使用 MySQL 数据库为例: ```python import mysql.connector db_config = { 'host': 'localhost', 'user': 'root', 'password': 'password', 'database': 'my_database' } cnx = mysql.connector.connect(**db_config) @app.route('/search', methods=['GET']) def search(): search_content = request.args.get('content') cursor = cnx.cursor() # 在数据库中进行搜索 query = "SELECT * FROM my_table WHERE content LIKE '%{}%'".format(search_content) cursor.execute(query) search_results = cursor.fetchall() cursor.close() # 返回搜索结果 return jsonify(search_results) ``` 以上就是一个简单的前后端配合实现搜索功能的过程。当然,实际应用中还需要考虑安全性、性能等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值