jQuery DataTables插件分页允许输入页码跳转
背景说明


方案分析
【官方】Navigation with text input这个是jQuery DataTables官方提供的插件,虽然实现了输入页码跳转的功能,但是和我目标效果不一致
【CSDN】DataTables页码后面添加可输入页码跳转这个方案是直接修改jquery.datatables.js的源码,在原有分页的后面添加输入框,然后在表格加载完成事件fnDrawCallback中为输入框添加事件。
- 在添加输入框的原理上和CSDN博客描述的一致
- 但是对于事件的处理,不在fnDrawCallback中进行,而是直接在添加输入框之后,紧接着根据id对输入框和确认按钮进行事件设置
- 而且CSDN博客中的事件代码在我这个版本的DataTables插件中无法执行,我转而参考了官方插件的事件代码,最终形成了我的方案
插入代码
- // START 2016-12-27添加,用于输入分页页码
- $(".gotoPage").remove();
- var pageHtml = "<span class='gotoPage' style='margin-left: 10px;'>" +
- "<span>到第</span>" +
- "<input type='text' style='width: 40px; padding-left: 2px; padding-right: 2px; text-align: center;' class='integer' id='textGotoPage' data-prev='"+(page+1)+"' value='"+(page+1)+"'>" +
- "<span>页</span>" +
- "<a class='paginate_button' style='width: 40px; border-right: 1px solid #e4e4e4;' id='btnGotoPage'>确认</a>" +
- "</span>";
- $(pageHtml).appendTo(container);
- // 对页码输入进行限制,只能输入数字
- var sfn = function() {
- var value = $(this).val();
- if (value == '') {
- $(this).data("prev", $(this).val());
- return;
- }
- var max = $(this).attr("maxlength");
- if (value.length > max)
- $(this).val(value.slice(0, max));
- var regex = /^\d+$/;
- if (!regex.test(value)) {
- $(this).val($(this).data("prev"));
- }
- $(this).data("prev", $(this).val());
- };
- var testinput = document.createElement('input');
- if('oninput' in testinput){
- document.getElementById("textGotoPage").addEventListener("input", sfn, false);
- } else {
- $("#textGotoPage").onpropertychange = sfn;
- }
- // 为确认按钮添加点击事件,执行分页跳转
- $("#btnGotoPage").click(function(){
- var textGotoPage = $("#textGotoPage").val();
- if (textGotoPage == null || textGotoPage === '' || textGotoPage.match(/[^0-9]/)) {
- // 没有输入或者输入了非数字,清除非数字
- $("#textGotoPage").val(textGotoPage.replace(/[^\d]/g, ''));
- return;
- }
- if(parseInt(textGotoPage) > 0){
- var oSettings = settings;
- var iNewStart = oSettings._iDisplayLength * (textGotoPage - 1);
- if (iNewStart < 0) {
- iNewStart = 0;
- }
- if (iNewStart >= oSettings.fnRecordsDisplay()) {
- iNewStart = (Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
- }
- oSettings._iDisplayStart = iNewStart;
- _fnDraw(oSettings);
- }
- });
- // END
jQuery DataTables插件分页允许输入页码跳转的更多相关文章
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- jQuery DataTables 插件使用笔记
初始化 在页面中 <!DOCTYPE html> <html> <head> <link rel="stylesheet" type=&q ...
- jquery.dataTables插件使用例子详解
DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格 效果图 代码 <!doctype html> & ...
- jquery 小插件,完成“输入字段预期值的提示信息”,防html5 placeholder属性
前言:在很多时候,我们需要文本框中显示默认值,获取焦点时,文字框中就会清空给的值,当失去焦点时,如果没有值,继续显示默认的文字,如果有输入值,就显示输入的值.现在项目中需要用到这个地方的功能比较多,于 ...
- jQuery 自定义插件 (分页控件)
1.引入jqpage.js 2.html代码 <div id="page"> </div> 3.js 调用 $(function () { $.fn.jqp ...
- 使用jquery datatables插件遇到fnReloadAjax的问题
1 官网地址:http://www.datatables.net/ 2 基本参数介绍 http://blog.csdn.net/mickey_miki/article/details/8240477 ...
- 黄聪:Jquery+DataTables插件,如何在ajax调用服务器数据后,自动给tr添加id属性
http://legacy.datatables.net/usage/callbacks#fnRowCallback 主要通过 fnCreatedRow 事件来实现 var table = $('#t ...
- jquery DataTables表格插件的使用(网页数据表格化及分页显示)
DataTables - 非常强大的 jQuery 表格插件,可变宽页码浏览,现场过滤. 多列排序,自动探测数据类型,智能列宽,可从几乎任何数据源获取数据. 那么在Bootstrap下如何使用Data ...
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
随机推荐
- 40. Linux下7-zip解压到当前目录的命令
7z x test.zip 解压到当前目录下,但保留原来的目录结构 7z e test.zip 解压到当前目录下,不保留原来的目录结构
- as3 加载gif loader
as3原生不支持gif动态图 loader 加载gif ,内容只是以bitmap加载进来 需要动态,另外衍生类: https://files.cnblogs.com/files/dt1991/GifL ...
- 10 python os&sys 模块
1.os模块 os模块提供了很多允许你的程序与操作系统直接交互的功能 os模块的主要功能:处理文件和目录,系统相关,执行命令,管理进程 检验给出的路径是否是一个文件:os.path.isfile() ...
- 【干货】国外程序员整理的 C++ 资源大全(转)
转zi:http://www.csdn.net/article/2014-10-24/2822269-c++ 关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz发起和维护. 内容包括:标准 ...
- Boost.Hana
Boost.Hana Boost.Hana 是一个元编程的库.它为不同种类数据的集合以及类型的集合提供了容器和算法. #include <boost/hana.hpp> namespace ...
- java 可伸缩阻塞队列实现
最近一年多写的最虐心的代码.必须好好复习java并发了.搞了一晚上终于测试都跑通过了,特此纪念,以资鼓励! import java.util.ArrayList; import java.util.L ...
- localstorage是什么,它有哪些作用
localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中,而客户端一般是指上海网站设计用户的计算机.在移动设备上,由于大部分浏览器都支持 w ...
- ingress 密码验证
traefik ingress 上面的方式需要引入haprox或者nginx,多引入了一个代理转发层,其实ingress本身就提供了basic auth的支持,在ingress规则中添加额外的认证an ...
- Oracle Client安装报错
Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件 http://tunps.com/p/11797.html 原因是Oracle Client 11g版本不支持最新的W ...
- moco入门
前提:moco是什么?有什么用 Moco是针对HTTP集成而生的,不过,现在也有人把它用在其它需要一个模拟服务器的场景中.比如,在移动开发中,有人开发一个移动应用,需要有一个远端服务,但在开发时,这个 ...