jQuery利用鍵盤上下鍵移動(dòng)表格內(nèi)容
本文實(shí)例為大家分享了jQuery利用鍵盤上下鍵移動(dòng)表格內(nèi)容的具體代碼,供大家參考,具體內(nèi)容如下
在我們編輯表格內(nèi)容時(shí),經(jīng)常需要將表格內(nèi)容的位置進(jìn)行移動(dòng),而利用鍵盤上下鍵進(jìn)行移動(dòng)是十分方便的。
效果如下:
基本原理是:先使用鼠標(biāo)選中其中的一行,隨后使用鍵盤上下鍵,通過(guò)獲取不同的鍵值區(qū)分上移和下移的操作,隨后首先交換兩行的編號(hào),隨后交換兩行的內(nèi)容,保證了兩行內(nèi)容移動(dòng)而編號(hào)不改變。
下面是代碼:
function clickA(obj){ ? ? ? ? ? ? currentLine=$.trim($(obj).find("td:first-child").html()); ? ? ?? ? ? ? ? $('#table1 tr').each(function () { $(this).css("background-color", "white"); }); ? ? ? ? //將所有行變?yōu)榘咨? ? ? ? ? $('#line' + currentLine).each(function () { $(this).css("background-color", "red"); }); ? ? ? ? //將當(dāng)前行變?yōu)榧t色 ? ? ? ?? ? ? ? ? ? //獲取當(dāng)前行數(shù)? }
以上為鼠標(biāo)的點(diǎn)擊一行的操作,獲取當(dāng)前的行數(shù),以及將當(dāng)前行變?yōu)榧t色。
<tr id=\"line"+num+"\" onclick='clickA(this)'></tr>
這個(gè)表格每一行的點(diǎn)擊事件綁定。
?$(document).keydown(function(event){ ? ? ? ? ? ? ? if(event.keyCode == 38){ ? ? ? ? ? ? ? //鍵盤上鍵 ? ? ? ? ? ? ?up_exchange_line(); ? ? ? ? ? }else if (event.keyCode == 40){ ?? ? ? ? ? ? ? down_exchange_line(); ? ? ? ? ? ? //鍵盤下鍵 ? ? ? ? ? } ? ? ? });
這個(gè)是獲取撲捉鍵盤上下鍵動(dòng)作,進(jìn)行不同的操作
function up_exchange_line(index) { ? ? ? ? if(currentLine != null && currentLine!= " "){ ? ? ? ? ? ? nowrow = currentLine; ? ? ? ? ? ? //獲取當(dāng)前行 ? ? ? ? }else if (index != null) { ? ? ? ? ? ? nowrow = $.trim($(index).parent().parent().find("td:first-child").html()); ? ? ? ? } ? ? ? ? if (nowrow == 0) { ? ? ? ? ? ? alert('請(qǐng)點(diǎn)擊一行'); ? ? ? ? ? ? return false; ? ? ? ? ? ? //未點(diǎn)擊,無(wú)當(dāng)前行要求用戶點(diǎn)擊一行 ? ? ? ? } ? ? ? ? ? ? ? ? if (nowrow <= 1) { ? ? ? ? ? ? alert('已到達(dá)頂端!'); ? ? ? ? ? ? return false; ? ? ? ? ? ? //上移到頂端后提示 ? ? ? ? } ? ? ? ?? ? ? ? ? var up = nowrow - 1; ? ? ? ?//首先交換兩行序號(hào) ? ? ? ? $('#line' + up + " td:first-child").html(nowrow); ? ? ? ? $('#line' + nowrow + " td:first-child").html(up); ? ? ? ? //變色 ? ? ? ? $('#table1 tr').each(function () { $(this).css("background-color", "white"); }); ? ? ? ? $('#line' + up).css("background-color", "red"); ; ? ? ? ? //獲取兩行的內(nèi)容 ? ? ? ? var upContent = $('#line' + up).html(); ? ? ? ? var currentContent = $('#line' + nowrow).html(); ? ? ? ?//交換內(nèi)容 ? ? ? ? $('#line' + up).html(currentContent); ? ? ? ? $('#line' + nowrow).html(upContent); ? ? ? ?? ? ? ? ? ? ? ?currentLine = up; ? ? ? ? ? ? ?//改變當(dāng)前行,為繼續(xù)上移做準(zhǔn)備 }
這個(gè)上移的方法,首先獲取當(dāng)前行數(shù),隨后獲取上一行的行數(shù),首先進(jìn)行序號(hào)的交換,隨后將當(dāng)前行的紅色變至上一行,隨后交換所有的內(nèi)容,最后更新當(dāng)前行。這樣保證了,內(nèi)容和當(dāng)前所在行會(huì)跟這個(gè)鍵盤上鍵而移動(dòng)而序號(hào)可以保持不變。
function down_exchange_line(index) { ? ? ? ? if(currentLine != null && currentLine != " "){ ? ? ? ? ? ? nowrow = currentLine; ? ? ? ? }else if (index != null) { ? ? ? ? ? ? nowrow = $.trim($(index).parent().parent().find("td:first-child").html()); ? ? ? ? } ? ? ? ? if (nowrow == 0) { ? ? ? ? ? ? alert('請(qǐng)選擇一項(xiàng)!'); ? ? ? ? ? ? return false; ? ? ? ? } ? ? ? ? maximum=$("#table1").find("tr").length ; ? ? ? ? if (nowrow >= maximum-1) { ? ? ? ? ? ? alert('已經(jīng)是最后一項(xiàng)了!'); ? ? ? ? ? ? return false; ? ? ? ? } ? ? ? ? var dS = parseInt(nowrow) + 1; ? ? ? ? $('#line' + dS + " td:first-child").html(nowrow); ? ? ? ? $('#line' + nowrow + " td:first-child").html(dS); ? ? ? ? //變色 ? ? ? ? $('#table1 tr').each(function () { $(this).css("background-color", "white"); }); ? ? ? ? $('#line' + dS).css("background-color", "red");? ? ? ? ? //獲取兩行的內(nèi)容 ? ? ? ? var nextContent = $('#line' + dS).html(); ? ? ? ? var currentContent = $('#line' + nowrow).html(); ? ? ? ? //交換內(nèi)容 ? ? ? ? $('#line' + dS).html(currentContent); ? ? ? ? $('#line' + nowrow).html(nextContent); ? ? ?? ? ? ? ? if(dS>maximum-1){ ? ? ? ? ? ? currentLine=dS-1; ? ? ? ? }else{ ? ? ? ? ? ? ?currentLine = dS; ? ? ? ? } ? ? ? ?? }
同理,下降也是使用相同的方法,只不過(guò)是向下交換數(shù)據(jù)。
這樣基于jQuery使用鍵盤上下鍵交換表格內(nèi)容的操作就完成了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery簡(jiǎn)單實(shí)現(xiàn)根據(jù)日期計(jì)算星期幾的方法
這篇文章主要介紹了jQuery簡(jiǎn)單實(shí)現(xiàn)根據(jù)日期計(jì)算星期幾的方法,涉及jQuery針對(duì)日期時(shí)間簡(jiǎn)單計(jì)算相關(guān)操作技巧,需要的朋友可以參考下2019-01-01基于Jquery代碼實(shí)現(xiàn)支持PC端手機(jī)端幻燈片代碼
支持PC端手機(jī)端幻燈片代碼是一款支持移動(dòng)觸摸,支持鼠標(biāo)拖拽切換,支持帶進(jìn)度條的自動(dòng)播放模式,本文給大家分享一款基于jquery代碼實(shí)現(xiàn)支持pc端手機(jī)端幻燈片代碼,感興趣的朋友一起學(xué)習(xí)吧2015-11-11jQuery實(shí)現(xiàn)的登錄浮動(dòng)框效果代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)的登錄浮動(dòng)框效果代碼,點(diǎn)擊登陸鏈接可彈出懸浮登錄框,涉及jQuery中show與hide方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09詳解jQuery的表單驗(yàn)證插件--Validation
jQuery Validate 插件為表單提供了強(qiáng)大的驗(yàn)證功能,讓客戶端表單驗(yàn)證變得更簡(jiǎn)單,同時(shí)提供了大量的定制選項(xiàng),滿足應(yīng)用程序各種需求。本文主要對(duì)表單驗(yàn)證插件-Validation進(jìn)行案例分析,詳細(xì)介紹,具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12jQuery彈出下拉列表插件(實(shí)現(xiàn)kindeditor的@功能)
這篇文章主要介紹了jQuery彈出下拉列表插件(實(shí)現(xiàn)kindeditor的@功能)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08快速實(shí)現(xiàn)jQuery多級(jí)菜單效果
這篇文章主要教大家如何快速實(shí)現(xiàn)jQuery多級(jí)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02jQuery zclip插件實(shí)現(xiàn)跨瀏覽器復(fù)制功能
這篇文章主要介紹了jQuery zclip插件實(shí)現(xiàn)跨瀏覽器復(fù)制功能的方法,以及在實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題,感興趣的小伙伴們可以參考一下2015-11-11