tp5页面输出时,搜索功能在跳转下一页时,如果不做任何处理,会返回原有是第二页输出的数据。为了保证跳转下一页时输出的是搜索到的数据,做以下处理。

(要根据自己的搜索字段进行适当修改)

页面js代码,给地址栏加上参数,以便于点击搜索按钮后台通过地址栏得到搜索条件。

$(document).ready(function(){
     //点击搜索按钮执行搜索 
$("#search").click(function() {
var form = $('#form');
var url = form.attr('action');
var query = $('.key').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
query = query.replace(/^&/g, '');
if (url.indexOf('?') > 0) {
url += '&' + query;
} else {
url += '?' + query;
}
form.attr('action',url);
});
//回车搜索
$(".search-form").keyup(function(e) {
if (e.keyCode === 13) {
$(".search").click();
return false;
}
});
    //设定input框的值,保留搜索条件,setValue的方法参照http://www.cnblogs.com/xiaopiyuanzi/p/5920864.html
setValue('shop_id', "{:input('get.shop_id')}");
setValue('key', "{:input('get.key')}");
})

搜索部分页面html代码

<div class="search search-form" style="background: #e0e0e0;margin-bottom: 10px">
<form action="{:url('news')}" id="form" method="post"
<table border="0" style="height: 50px;font-size: 15px;color: black;" cellpadding="5" width="35%">
<tr>
<td>商品类:
<select name="shop_id" class="key">
<option value="all">全部</option>
{volist name='li' id='k'}
<option value="{$k.id}">{$k.name}</option>
{/volist}
</select>
</td>
<td>标题:<input type="text" name="key" class="key" class="inpMain" placeholder="新闻标题或标题包含字"></td>
<td><input type="submit" id="search" class="btn" value="搜索" /></td>
</tr>
</table>
</form>
</div>

控制器主要代码

if (empty(input('get.'))) {
  $page = NewsModel::where('isdelete',1)->order('id desc')->paginate(8);
  $this->assign('list',$page);
  return $this->fetch();
} else {
  $shop_id=input('get.shop_id');
  $key=input('get.key');
  if ($shop_id=='all' && $key != '') {
    $page=NewsModel::where(['title'=>['like',"%$key%"],'isdelete'=>['eq',1]])->order('id desc')->paginate(8,false,[
    'query' => ['shop_id' => $shop_id,'key' => $key] //url额外参数
    ]);
  } elseif ($shop_id != 'all' && $key != '') {
    $page=NewsModel::where(['title'=>['like',"%$key%"],'shop_id'=>['eq',$shop_id],'isdelete'=>['eq',1]])->order('id desc')->paginate(8,false,[
    'query' => ['shop_id' => $shop_id,'key' => $key]
    ]);
  } elseif ($shop_id != 'all' && $key == '') {
    $page=NewsModel::where(['shop_id'=>['eq',$shop_id],'isdelete'=>['eq',1]])->order('id desc')->paginate(8,false,[
    'query' => ['shop_id' => $shop_id,'key' => $key]
    ]);
  } else {
    $page=NewsModel::where('isdelete',1)->order('id desc')->paginate(8,false,[
    'query' => ['shop_id' => $shop_id,'key' => $key]
    ]);
  }
  $this->assign('list',$page);
  return $this->fetch();
}

tp5页面输出时,搜索后跳转下一页的处理的更多相关文章

  1. 两种方法实现js页面隔几秒后跳转,及区别

    这里需要用到window的两个对象方法,setInterval()和setTimeout() 一. 区别: 1.  setInterval(code,millisec)  周期性(millisec单位 ...

  2. android 页面停几秒后跳转

      <span style="white-space:pre">      </span>//实现等待几秒后跳转,方法一 new Handler().pos ...

  3. 关于 第三方接口支付的时候 采用post提交的方式,有两种 一种是通过 curl来进行,一种是通过js当页面加载完后跳转

    这是第一种.通过javascript页面加载完后,对表单采用 post方式提交给 第三方接口----- echo <<<_END<!DOCTYPE html PUBLIC &q ...

  4. jqgrid重新加载后跳到指定页

    一般要求重新加载jqgrid后是跳到第一页 $("#jqgrid").jqGrid('setGridParam',{ datatype:'json', page:1 }).trig ...

  5. vim搜索后跳到下(上)一个

    搜索高亮后, 跳到下一个:小写n 上一个:大写N

  6. php页面输出时,js设置input框的选中值

    /* 设置表单的值 */ function setValue(name, value) { var first = name.substr(0, 1), input, i = 0, val; if ( ...

  7. 一百二十一:CMS系统之注册后跳转到上一个页面

    实现功能,访问测试页面的时候,跳转到注册页面,注册成功后跳转到测试页面 使用参数:若是从其他地址跳转过来时,头部信息中会携带参数referrer,此参数为从从哪个地址跳转到当前地址的,若是直接从浏览器 ...

  8. 小程序使用微信地址or小程序跳转设置页

    如果你有使用过小程序需要你授权微信地址的情况,那么正常的逻辑应该是这样的: 点击获取地址后,弹窗: 此时我相信选择拒绝的人应该还是比较多的,毕竟这是敏感数据,拒绝后再看页面相关功能是否有使用地址的合适 ...

  9. 类似智能购票的demo--进入页面后默认焦点在第一个输入框,输入内容、回车、right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个。

    要实现的效果:进入页面后默认焦点在第一个输入框,输入内容.回车.right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个. PS:自己模拟的 ...

随机推荐

  1. js定时器的时间最小值-setTimeout、setInterval

    HTML5标准规定 setTimeout的最短时间间隔是4毫秒: setInterval的最短间隔时间是10毫秒,也就是说,小于10毫秒的时间间隔会被调整到10毫秒 书和MDC 在John Resig ...

  2. Atitit java的异常exception 结构Throwable类

    Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

  3. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

  4. C#学习系列-this的使用

    如有错误,欢迎指正. 1.代表当前类,在当前类中可使用this访问当前类成员变量和方法(需要注意的是 静态方法中不能使用this),也可用于参数传递,传递当前对象的引用. 下面贴代码: class P ...

  5. java 线程协作 join()

    在实际开发中我们往往会遇到这样的情况一个线程的执行需要依赖另一个线程执行后的结果.即主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他 ...

  6. jquery-toastmessage-plugin 简介信息

    jquery-toastmessage-plugin 简介信息 jquery-toastmessage-plugin是一个JQuery插件实现了类似于android的消息通知对话框.它提供4种消息提醒 ...

  7. KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定

    textInput绑定目的 textInput绑定主要用于<input>或者<textarea>元素.他提供了DOM和viewmodel的双向更新.不同于value绑定,tex ...

  8. PHP的学习--PHP的引用

    引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最 ...

  9. 在office2010的ppt中加入音乐

    Microsoft office Powerpoint,是微软公司设计的演示文稿软件.用户不仅可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中.利用Mi ...

  10. Spring学习总结(三)——Spring实现AOP的多种方式

    AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的横向多模块统一控制的一种技术.AOP是OOP的补充,是Spring框架中的一个 ...