[html5]表格拖动
来源:互联网 发布:java 文本输入框 编辑:程序博客网 时间:2024/06/01 09:26
表格拖动前:
表格拖动后:
实现代码:
function dragFromLeft(){ /**从左表拖动一条记录到右表*/ $(".group-wish-list-table, .js-table-container").droppable({ drop: function(event, ui) if (drapingId !== undefined && drapingId !== "" && drapingId !== null) { if (isAddrow) { /** 增加一条记录 */ var leftRowObj = $('#left' + drapingId); if(leftRowObj.length>0){ var rightRowObj = $('#right' + drapingId); if (rightRowObj.length > 0) { console.log("exist"); csp.notify('notice', { msg: '该股票已存在于心愿清单,可进行数量更改或删除操作', delay: 5000, }); return ; } else { var surBp =$(".js-surplusBp-value").text().split(':')[1]; $scope.surplusBP = $scope.unformat(surBp); console.log($scope.surplusBP,surBp) var calRlt = $scope.calCurMarketValue(drapingId, 100,$scope.surplusBP); var cAmount = $scope.calCurUnitAmount(drapingId, 100); if (calRlt) { var stockNum = 0; var rowObjs = $(leftRowObj).children(); if(cAmount){ stockNum = 100 }else{ stockNum = $(rowObjs[5]).html(); } var stockTotal = $(rowObjs[5]).html(); var stockNo = $(rowObjs[1]).html(); var stockName = $(rowObjs[2]).html(); var marketVal = $scope.formatNumber(100 * $scope.calStockUnitPrice(stockNo.split('.')[0]),2); var idStr = "right" + drapingId; var insertHtmlStr = '<tr class="js-right-row" id="' + idStr + '"><td>' + 0 + '</td><td>' + stockNo + '</td><td>' + stockName + '</td><td class="js-amount-right" style="padding-top:1px;padding-bottom:1px;">' + '<div class="ui icon input js-stock-num"><input type="text" value="' + stockNum + '" style="width:100px;" ><div class="js-num-change"><i class="caret up link icon"></i>' + '<i class="caret down link icon"></i></div> <div class="ui label" style="width:40%;color:rgba(39, 35, 35, 0.45);padding-top:14px;">'+stockTotal +' </div></div></td><td class="js-num-right">' + marketVal + '</td>' + '<td><i class="trash outline big link icon" data-content="移除"></i>' + '</td></tr>'; var tableConObjs = $(this).children(); var tableConObj = tableConObjs[0]; var tableObjs = $(tableConObj).children(); var tableObj = tableObjs[0]; var tbodyObj = tableObjs[1]; var bodyObjs = $(tableObj).next().children(); if (bodyObjs.length > 0) { $(tbodyObj).append(insertHtmlStr); } else { $(tableObj).next().append(insertHtmlStr); } $scope.updateCurMaketValue(); } else { // 弹出对话框提示超过了BP值 //$('.overBP.modal').modal('show'); csp.notify('notice', { msg: '超出剩余杠杆BP,无法添加进心愿清单', delay: 5000, }); } } } } } $scope.tableOperator(); $scope.dealRightTableNo(); } })}/** * @func clearTable * @desc 清空表格 * @author ll * @param {string} idStr 想要清空的表格id */$scope.clearTable = function(idStr){ try{ var thistable = document.getElementById(idStr); var trs = thistable.getElementsByTagName("tr"); for(var i = trs.length - 1; i > 0; i--) { thistable.deleteRow(i); } }catch(e){ }}/** * @func dragLeftTable * @desc 左表拖动 * @author ll */ $scope.dragLeftTable = function(){ //左边表格拖拽操作 $(".js-left-table").draggable({ cursor: "move", cursorAt: { top: 0, left: 0}, helper: "clone", start: function() { var rows = $(this).children(); var stockNo = $(rows[1]).html(); drapingId = stockNo.split('.')[0]; isAddrow = true; console.log("is-------->isAddrow",isAddrow) } });}/** * @func refreshUnitStocks * @desc 刷新券表界面 * @author ll */ $scope.refreshUnitStocks = function(curTrid){ var a = {trid:''}; a.trid = curTrid; var windowHeight = $(window).height()*0.65; wishListService.getUnitStocks(a,function(data) { $scope.clearTable("left-table"); $(".trade-unit-stock-table.container").css("height",windowHeight); if (data.length >= 0) { var insertHtmlStr = ''; for (var i = 0; i < data.length; i++) { var index = i+1 var stockNo = data[i].cid; var stockName = data[i].cname; var stockNum = $scope.formatNumber(data[i].totalsa); var idStr = "left" + data[i].cid.split('.')[0]; var marketVal = $scope.formatNumber(data[i].preclose,2); var surplusNum = $scope.formatNumber(data[i].totalsa-data[i].allocatedsa); var surplusVal = $scope.formatNumber((data[i].totalsa-data[i].allocatedsa)*data[i].preclose,2); if(idStr!=='left000000'){ //ui-widget-content var tempInsertHtmlStr = '<tr class="js-left-table " id="' + idStr + '" style="height:50px;"><td>'+index+'</td><td>' + stockNo + '</td><td>' + stockName + '</td><td class="js-num-left">' + stockNum + '</td><td class="js-num-left">' + marketVal + '</td><td class="js-num-left">' + surplusNum + '</td><td class="js-num-left">' +surplusVal+'</td></tr>'; insertHtmlStr += tempInsertHtmlStr; } else{ var tempInsertHtmlStr = '<tr class="js-left-table " style="height:50px;background-color:rgb(230, 32, 32);"><td>'+index+'</td><td>' + stockNo + '</td><td>' + stockName + '</td><td class="js-num-left">' + stockNum + '</td><td class="js-num-left">' + marketVal + '</td><td class="js-num-left">' + surplusNum + '</td><td class="js-num-left">' +surplusVal+'</td></tr>'; insertHtmlStr += tempInsertHtmlStr; csp.notify('notice', { msg: '总券表中存在行情不存在的股票,请到交易单元总券表末尾仔细核对是否输入错误', delay: 15000, }); } } if (insertHtmlStr.length > 0) { //console.log("getUnitStocks insertHtmlStr--->", insertHtmlStr); $(".js-left-tbody").append(insertHtmlStr); //tableOperator(); /** 左边表格拖拽操作 */ $scope.dragLeftTable() } } $(".groupWish-view").removeClass("active"); });}/** * @func formatNumber * @desc 格式化数字 * @param {number} num 需要被格式化的数字 * @param {int} [precision] 格式化后的精度 * @author lizhexi */$scope.formatNumber = function(num, precision) { var parts; // 判断是否为数字 if (!isNaN(parseFloat(num)) && isFinite(num)) { num = Number(num); // 处理小数点位数 num = (typeof precision !== 'undefined' ? num.toFixed(precision) : num).toString(); // 分离数字的小数部分和整数部分 parts = num.split('.'); // 整数部分加[separator]分隔, 借用一个著名的正则表达式 parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + ','); return parts.join('.'); } return NaN;}/** * @func unformat * @desc 将加了千位符的各字符串转换为数字 * @param {String} str 需要被转换为数字的字符串 * @author ll */$scope.unformat = function(str){ var num =str.split(",") var realnum = +(num.join('')) return realnum;}/** * @func updateCurMaketValue * @desc 更新心愿清单总市值 * @author wangxiong */ $scope.updateCurMaketValue = function() { var curTotalVal = 0.0; var rowObjs = $(".js-right-table").children(); for (var i = 0; i < rowObjs.length; i++) { var rows = $(rowObjs[i]).children(); var marketValObj = rows[4]; var marketVal = $scope.unformat($(marketValObj).text()); curTotalVal += parseFloat(marketVal); var cnameObj = rows[2]; var cname=$(cnameObj).text(); } $scope.marketPrice = curTotalVal.toFixed(2) var curTotalValStr = "占用BP:" + $scope.formatNumber(curTotalVal,2); $(".js-market-value").html(curTotalValStr);}/** * @func calStockUnitAmount * @desc 获取左侧表该股剩余股票数量 * @author lizhexi */$scope.calStockUnitAmount = function(stockNo) { var leftRowObj = $('#left' + stockNo); var leftrowObjs = $(leftRowObj).children(); var unitAmount = $scope.unformat($(leftrowObjs[5]).text()); return unitAmount;}/** * @func calCurUnitAmount * @desc 判断心愿清单某支股票数量是否超过券表中数量 * @author lizhexi * @param Boolean rlt false-超过不可继续操作 true-未超过可继续操作 */$scope.calCurUnitAmount = function(stockNo, stockNum) { var rlt = false; var unitAmount = $scope.calStockUnitAmount(stockNo); if (stockNum >unitAmount) { rlt = false; }else{ rlt = true; } return rlt;}/** * @func calStockUnitPrice * @desc 获取左侧表格指定股票单价 * @author wangxiong */$scope.calStockUnitPrice = function(stockNo) { var leftRowObj = $('#left' + stockNo); var leftrowObjs = $(leftRowObj).children(); var unitPrice = $scope.unformat($(leftrowObjs[4]).text()) return unitPrice;}/** * @func calCurMarketValue * @desc 判断心愿清单市值是否超过BP * @author wangxiong * @param Boolean rlt false-超过不可继续操作 true-未超过可继续操作 */$scope.calCurMarketValue = function(stockNo, stockNum, surplusBp) { var rlt = false; var unitPrice = $scope.calStockUnitPrice(stockNo); var curTotalVal = 0.0; var rowObjs = $(".js-right-table").children(); for (var i = 0; i < rowObjs.length; i++) { var rows = $(rowObjs[i]).children(); console.log('rows[1].text()', $(rows[1]).text()) if (stockNo === $(rows[1]).text().split('.')[0]) { continue; } var marketValObj = rows[4]; var marketVal = $scope.unformat($(marketValObj).text()); curTotalVal += parseFloat(marketVal); } console.log(curTotalVal,stockNum,unitPrice,surplusBp) if (curTotalVal + stockNum * unitPrice > surplusBp) { rlt = false; }else{ rlt = true; } return rlt;}/** * @func dealRightTableNo * @desc 处理右表编号 * @author wangxiong */$scope.dealRightTableNo = function() { var rowObjs = $(".js-right-table").children(); for (var i = 0; i < rowObjs.length; i++) { var rows = $(rowObjs[i]).children(); var rowNo = rows[0]; $(rowNo).text(i + 1); }}/** * @func delayInputDeal * @desc 判断输入数量是否是数字。目前未判断是否为整百。可以日后改。 * @author wangxiong */$scope.delayInputDeal = function(data) { var curNumStr = $(data).val(); var oldValue =$(data).attr("value"); if(/^\d+$/.test(curNumStr)){ /** 判断输入数量是否为正整数 */ var dealNumStr = curNumStr.replace(/\D/g,''); //console.log("oldVaue-->",oldValue,"dealNumStr-->",dealNumStr); $(data).val(dealNumStr); var stockNo = $(data).parent().parent().prev().prev().text(); //console.log("stockNo-->",stockNo) var tempStr = dealNumStr; var surBp =$(".js-surplusBp-value").text().split(':')[1]; $scope.surplusBP = $scope.unformat(surBp); /** 注释掉了整手判断的条件 */ // if (tempStr % 100 == 0) { var cAmount = $scope.calCurUnitAmount(stockNo.split('.')[0], parseInt(tempStr)); if(cAmount){ var rlt = $scope.calCurMarketValue(stockNo.split('.')[0],parseInt(tempStr),$scope.surplusBP); if(rlt) { $(data).attr("value",dealNumStr) //console.log("cAmount--->",cAmount,"rlt-->",rlt,"替换成功",$(data).attr("value")); }else{ $(data).val(oldValue); csp.notify('notice', { msg: '超出剩余杠杆BP,请重新确认数量', delay: 5000, }); console.log("超出剩余杠杆BP_input"); } }else{ $(data).val(oldValue); csp.notify('notice', { msg: '超出券表中该支证券数量,请重新确认数量', delay: 5000, }); console.log("超出券表中该支证券数量"); } // } else { // //TODO modal // csp.notify('notice', { // msg: '请输入以100股为单位的数据', // delay: 15000, // }); // $(data).val(oldValue); // } var unitPrice = $scope.calStockUnitPrice(stockNo.split('.')[0]); tempStr = $(data).val(); var curVal = $scope.formatNumber(tempStr * unitPrice,2); $(data).parent().parent().next().html(curVal); $scope.updateCurMaketValue(); }else{ $(data).val(oldValue); csp.notify('notice', { msg: '请输入正确格式数量', delay: 5000, }); }}/** * @func tableOperator * @desc 操作心愿单 * @author wangxiong */$scope.tableOperator = function() { $scope.dragLeftTable() $(".js-right-row").draggable({ cursor: "move", cursorAt: { top: 0, left: 0 }, helper: "clone", start: function() { var rows = $(this).children(); var stockNo = $(rows[1]).html(); drapingId = stockNo.split('.')[0]; isAddrow = false; } }); //数量增加100 $(".caret.up.link").unbind("click").click(function() { var curNumStr = $(this).parent().prev().val(); if (curNumStr == null || curNumStr == undefined || curNumStr == '') { curNumStr = '0'; } var stockNo = $(this).parent().parent().parent().prev().prev().html(); var stockInput = $(this).parent().prev().val(); console.log("curNumStr", curNumStr); console.log("stockNo", stockNo); console.log("stockInput", stockInput); var surBp =$(".js-surplusBp-value").text().split(':')[1]; $scope.surplusBP = $scope.unformat(surBp); console.log('input',$scope.surplusBP,surBp) var rlt = $scope.calCurMarketValue(stockNo.split('.')[0], parseInt(stockInput) + 100, $scope.surplusBP); var cAmount=$scope.calCurUnitAmount(stockNo.split('.')[0], parseInt(stockInput) + 100); if(cAmount){ if (rlt) { var curNum = 0; curNum = parseInt(curNumStr) + 100; $(this).parent().prev().val(curNum); $(this).parent().prev().attr("value",curNum); var unitPrice = $scope.calStockUnitPrice(stockNo.split('.')[0]); var curVal = $scope.formatNumber(curNum * unitPrice,2); $(this).parent().parent().parent().next().html(curVal); } else { //TODO 对话框 csp.notify('notice', { msg: '超出剩余杠杆BP,请重新确认心愿清单', delay: 5000, }); // $('.wish_list_tips').css("display","block"); // $scope.wishListTips = '超出剩余杠杆BP,请重新确认心愿清单' // $('.wish_list_tips').text($scope.wishListTips) // setTimeout(function(){ // $scope.wishListTips = ''; // $('.wish_list_tips').css("display","none"); // }, 3000); //console.log("超出剩余杠杆"); console.log("数量增加失败-->", stockNo); } }else{ csp.notify('notice', { msg: '超出券表中该支证券数量,请重新确认数量', delay: 5000, }); // $('.wish_list_tips').css("display","block"); // $scope.wishListTips = '超出券表中该支证券数量,请重新确认数量' // $('.wish_list_tips').text($scope.wishListTips) // setTimeout(function(){ // $scope.wishListTips = ''; // $('.wish_list_tips').css("display","none"); // }, 3000); console.log("超出券表中该支证券数量"); } $scope.updateCurMaketValue(); }); //数量减少100 $(".caret.down.link").unbind("click").click(function() { var stockNo = $(this).parent().parent().parent().prev().prev().html(); var curNumStr = $(this).parent().prev().val(); var curNum = 0; curNum = parseInt(curNumStr) - 100; if (curNum >=0) { $(this).parent().prev().val(curNum); $(this).parent().prev().attr("value",curNum); var unitPrice = $scope.calStockUnitPrice(stockNo.split('.')[0]); var curVal = $scope.formatNumber(curNum * unitPrice,2); $(this).parent().parent().parent().next().html(curVal); } else if (curNum >= -100) { $(this).parent().prev().val(0); $(this).parent().prev().attr("value",0); $(this).parent().parent().parent().next().html(formatNumber(0,2)); } $scope.updateCurMaketValue(); }); //防止非法字符 $("input").focus(function(){ var inputObj = this var $inputObj = $(inputObj) var oldValue = $inputObj.attr("value") $inputObj.off("keyup").on("keyup",function(event) { if(event.keyCode == "13"){ $inputObj.blur(); } }); $inputObj.unbind("blur").blur(function(){ $scope.delayInputDeal(inputObj); }) }) //隐藏按钮、显示按钮 $(".input").on("mouseenter mouseleave", function(event) { var $me = $(this); if( event.type == "mouseenter"){ $(this).children(".js-num-change").show(); }else if(event.type == "mouseleave" ){ $(this).children(".js-num-change").hide(); } }); //删除记录 $(".trash, .outline").on("click", function() { $(this).parent().parent().remove(); $scope.dealRightTableNo(); $scope.updateCurMaketValue(); });// //右边拖动自行处理$(".js-right-row").droppable({ accept:".js-right-row ", drop: function(event, ui) { if (drapingId !== undefined && drapingId !== "" && drapingId !== null) { //移动一条记录 var dragRowObj = $('#right' + drapingId); var htmlStr = $(dragRowObj).html(); var rowObjs = $(dragRowObj).children(); var stockNo = $(rowObjs[1]).html(); var stockName = $(rowObjs[2]).html(); var stockNum1 = $(rowObjs[3]).children(); var stockNum2 = $(stockNum1[0]).children(); var stockNum = $(stockNum2[0]).val(); var marketVal = $(rowObjs[4]).html(); var stockTotal = $(stockNum2[2]).html(); var idStr = "right" + drapingId; var insertHtmlStr = '<tr class="js-right-row warning" id="' + idStr + '"><td>' + 0 + '</td><td>' + stockNo + '</td><td>' + stockName + '</td><td class="js-amount-right" style="padding-top:1px;padding-bottom:1px">' + '<div class="ui icon input js-stock-num"><input type="text" value="' + stockNum + '" style="width:100px;"><div class="js-num-change"><i class="caret up link icon"></i>' + '<i class="caret down link icon"></i></div><div class="ui label" style="width:40%;color:rgba(39, 35, 35, 0.45);padding-top:14px;">'+stockTotal +' </div></div></td><td class="js-num-right">' + marketVal + '</td>' + '<td><i class="trash outline big link icon" data-content="移除"></i>' + '</td></tr>'; var curRow = this; var parentObj = $(curRow); var pId = $(parentObj).attr("id"); console.log("----->", pId); console.log("--->", 'right' + drapingId); if (pId == undefined || pId == "" || pId == null || pId === ('right' + drapingId)) { return ; } else { $(curRow).before(insertHtmlStr); $(dragRowObj).remove(); $('.js-right-row').removeClass("warning"); $('#right' + drapingId).addClass("warning"); // setTimeout(function(){ // // $('#right' + drapingId).removeClass("warning"); // },4000); } $scope.tableOperator(); $scope.dealRightTableNo(); } }});}/** * @func saveWishLists * @desc 保存用户心愿清单数据 * @author */ function wishList() { this.stockIndex = ""; this.stockNo = ""; this.stockName = ""; this.stockNum = ""; this.marketVal = ""; this.stockTotal = ""; } //获取当前日期$scope.getNowDate = function() { var nowdate = new Date(); var year = nowdate.getFullYear(); var month = nowdate.getMonth() + 1; var day = nowdate.getDate(); var datestr = ""; datestr += year; if(month < 10) { datestr += "0"; } datestr += month; if(day < 10) { datestr += "0"; } datestr += day; return datestr;}
阅读全文
0 0
- [html5]表格拖动
- 表格拖动
- 拖动表格
- 拖动表格
- 表格拖动
- HTML5 拖动
- HTML5拖动
- HTML5:表格
- html5 表格
- 表格 -- HTML5
- 网页中拖动表格
- 拖动表格列
- 表格列的拖动
- 表格行拖动
- js表格拖动排序
- 表格行拖动
- 拖动改变表格宽度
- 可拖动的表格
- linux查看文件内容
- Serial Programming HOWTO——Linux 串口编程HOWTO
- python+ES6.0查询(一)
- 4-2 电子时钟中的运算符重载
- Hive jdbc 连接 Oracle数据库
- [html5]表格拖动
- php 语法 常量 变量 数据类型详解
- 数据表设计常用规范
- 无敌全web.xml配置文件元素详解
- generatorConfiguration 配置
- web压测工具 apache-Jmeter安装,基于win10
- 第一课 机器学习的动机与应用
- [Unity]关于UGUI拖拽备份克隆功能的简单实现
- 如何经营好自己的朋友圈