封装组件js-----keyDown.js
$(function(){
var table = {
size: $("#size").val()
};
var inputnum = 0;
// 键盘事件
document.onkeydown = function(event){
// 兼容 Mozilla Firefox
if (null == event) {
event = window.event;
}
else if ((event.keyCode <= 40 && event.keyCode >= 37) || event.keyCode == 9) {
keyinput(event);
}
}
// 实现切换功能主要代码
function keyinput(event){
var target = event.target;
var len = Number(table.size);
if(target.localName == 'select'){
event.preventDefault();
}
var inputnum = Number($(target).attr("data-val"));
var key = event.keyCode;
// 左
if (key == 37) {
--inputnum;
}
// 右
else if (key == 39) {
++inputnum;
}
// 上
else if (key == 38) {
inputnum = inputnum - len;
}
// 下
else if (key == 40) {
inputnum = inputnum + len;
}
// Tab
else if(key == 9){
++inputnum;
}
getPoint(inputnum);
}
function getPoint(inputnum){
setTimeout(function(){
if($("[data-val='"+inputnum+"']").length > 0){
document.getElementById($("[data-val='"+inputnum+"']").attr("id")).focus();
$("[data-val='"+inputnum+"']").focus();
//document.getElementById($("[data-val='"+inputnum+"']").attr("id")).setSelectionRange($("[data-val='"+inputnum+"']").val().length, $("[data-val='"+inputnum+"']").val().length);
document.getElementById($("[data-val='"+inputnum+"']").attr("id")).select();
}
},0);
}
})
示例代码:
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('')" />
<style type="text/css">
.table-hover>tbody>tr:hover {
background-color: #fff !important;
}
.form-control {
width: 100px
}
</style>
</head>
<body class="white-bg">
<div class="table-box" style="margin: 20px;">
<div id="toolbar">
<button id="button" class="btn btn-default">新增行</button>
<button id="deleteRow" class="btn btn-default">删除行</button>
</div>
<input type="hidden" value="12" id="size"/>
<table id="table"></table>
</div>
<th:block th:include="include :: footer" />
<script th:src="@{/js/keyDown.js}"></script>
<script th:inline="javascript">
var prefix = ctx + "payOil/payOilCount";
var changeId = [[${changeId}]];
var oilDatas = [[${@dict.getType('oil_type')}]];
var salesDatas = [[${@dict.getType('sales_type')}]];
var isEdit = [[${isEdit}]];
$(function() {
let $table = $('#table');
let $button = $('#button');
let $deleteRow = $('#deleteRow');
let $getTableData = $('#getTableData');
$button.click(function() {
var row=
{
oilType: '92',
fuelType:'汽油',
goWordCount: '',
backTankCount: '',
backTankNumber: '',
payOilCount: '',
payOilCash: '',
payOilIccard: '',
//payOilAggregate: '',
price: '',
cashAmount: '',
iccardAmount: '',
aggregateAmount: ''
};
//append 追加到最后一行
//prepend 新增到第一行
$table.bootstrapTable('append', row);
//更新行数据
$table.bootstrapTable('updateRow',row);
//定位到最后一行
$table.bootstrapTable('scrollTo', 'bottom');
/* $table.bootstrapTable('insertRow', {
index: 0,
row: {
oilType: '92',
fuelType:'汽油',
goWordCount: '',
backTankCount: '',
backTankNumber: '',
payOilCount: '',
payOilCash: '',
payOilIccard: '',
payOilAggregate: '',
price: '',
amount: ''
}
}); */
});
$deleteRow.click(function() {
var rows = $table.bootstrapTable('getSelections');//获取选中行
if (rows.length == 0) {
layer.msg("请选择要删除的数据");
return;
}
var indexs = [];
var ids = [];
for(var i = 0;i < rows.length;i++){
indexs[i] = rows[i].index;
if(rows[i].id != null){
ids[i] = rows[i].id;
}
}
//删除
$table.bootstrapTable('remove', {
field:'index',
values:indexs
});
if(ids.length > 0){
ids = ids.join();
$.post(prefix + "/remove",{"ids":ids},function(data){
layer.msg("删除成功!");
})
}
});
$table.bootstrapTable({
url: prefix + '/list?changeId=' + changeId,
toolbar: '#toolbar',
clickEdit: false,
showToggle: false,
pagination: false, //显示分页条
showColumns: false,
showPaginationSwitch: false, //显示切换分页按钮
showRefresh: false, //显示刷新按钮
striped: false,
//clickToSelect: true, //点击row选中radio或CheckBox
columns: [
[
{
checkbox: true,
rowspan: 2,
valign: 'middle', halign: "center", align: 'center'
},
{
field: 'index',
title: '序列',
rowspan: 2,
width: '10px',
formatter:function(value, row, index) {
return row.index = index+1; //返回行号
},
valign: 'middle', halign: "center", align: 'center',
},
{
field: 'oilType',
title: '品种',
rowspan: 2,
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result = "<select class='form-control' data-val='"+(index + 1 + index * len + 0)+"' id='"+index+"oilType' onchange='getValues("+index+")'>";
if(!isEdit){
result = "<select disabled='disabled' class='form-control' id='"+index+"oilType' onchange='getValues("+index+")'>";
}
for(var i = 0; i < oilDatas.length; i++){
var oil = oilDatas[i];
if(value == oil.dictValue){
result += "<option value='"+oil.dictValue+"' selected='selected'>"+oil.dictLabel+"</option>";
}else {
result += "<option value='"+oil.dictValue+"'>"+oil.dictLabel+"</option>";
}
}
result += "</select>";
return result;
}
},
{
field: 'fuelType',
title: '燃油类型',
rowspan: 2,
valign: 'middle', halign: "center", align: 'center',
width: '80px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result = "<select class='form-control' data-val='"+(index + 1 + index * len + 1)+"' id='"+index+"fuelType' onchange='getValues("+index+")'>";
if(!isEdit){
result = "<select disabled='disabled' class='form-control' id='"+index+"fuelType' onchange='getValues("+index+")'>";
}
var oilType = row.oilType;
var fuelType = "";
if(oilType == "92" || oilType == "95" || oilType == "98"){
fuelType = "汽油";
}
if(oilType == "0" || oilType == "-10" || oilType == "-20"){
fuelType = "柴油";
}
if(oilType == "尿素"){
fuelType = "非油";
}
for(var i = 0; i < salesDatas.length; i++){
var sales = salesDatas[i];
if(fuelType == sales.dictValue){
result += "<option value='"+sales.dictValue+"' selected='selected'>"+sales.dictLabel+"</option>";
}else {
result += "<option value='"+sales.dictValue+"'>"+sales.dictLabel+"</option>";
}
}
result += "</select>";
return result;
}
},
{
field: 'goWordCount',
title: '走字总数',
rowspan: 2,
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"goWordCount' data-val='"+(index + 1 + index * len + 2)+"' autocomplete='off'" +
"class='form-control' style='width:100%' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"goWordCount' autocomplete='off'" +
"class='form-control' style='width:100%' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
title: '回罐',
colspan: 2,
align: 'center', valign: 'middle', halign: "center", align: 'center'
},
{
title: '付油数量(升)',
colspan: 3,
align: 'center', valign: 'middle', halign: "center", align: 'center'
},
{
field: 'price',
title: '单价',
rowspan: 2,
width: '100px',
valign: 'middle', halign: "center", align: 'center',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"price' " +
"class='form-control' autocomplete='off' data-val='"+(index + 1 + index * len + 8)+"' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"price' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
title: '金额',
colspan: 3,
align: 'center', valign: 'middle', halign: "center", align: 'center'
}
],
[
{
field: 'backTankCount',
title: '数量',
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"backTankCount' data-val='"+(index + 1 + index * len + 3)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"backTankCount' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
field: 'backTankNumber',
title: '罐号',
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"backTankNumber' data-val='"+(index + 1 + index * len + 4)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"backTankNumber' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
field: 'payOilCount',
title: '合计',
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"payOilCount' data-val='"+(index + 1 + index * len + 5)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"payOilCount' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
field: 'payOilCash',
title: '现金',
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"payOilCash' data-val='"+(index + 1 + index * len + 6)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"payOilCash' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
field: 'payOilIccard',
title: 'IC卡',
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"payOilIccard' data-val='"+(index + 1 + index * len + 7)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"payOilIccard' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
/* {
field: 'payOilAggregate',
title: '聚合',
valign: 'middle', halign: "center", align: 'center',
width: '100px',
formatter: function(value,row,index){
var result ="<input id='"+index+"payOilAggregate'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
return result;
}
}, */
{
field: 'cashAmount',
title: '现金金额',
width: '100px',
valign: 'middle', halign: "center", align: 'center',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"cashAmount' data-val='"+(index + 1 + index * len + 9)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"cashAmount' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
field: 'iccardAmount',
title: 'IC卡金额',
width: '100px',
valign: 'middle', halign: "center", align: 'center',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"iccardAmount' data-val='"+(index + 1 + index * len + 10)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"iccardAmount' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
},
{
field: 'aggregateAmount',
title: '聚合金额',
width: '100px',
valign: 'middle', halign: "center", align: 'center',
formatter: function(value,row,index){
var len = Number($("#size").val()) - 1;
var result ="<input id='"+index+"aggregateAmount' data-val='"+(index + 1 + index * len + 11)+"' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
if(!isEdit){
result ="<input disabled='disabled' id='"+index+"aggregateAmount' autocomplete='off'" +
"class='form-control' value='"+((value == undefined)?'':value)+"' onblur='getValues("+index+")'>";
}
return result;
}
}
]
],
onLoadSuccess: function(data){
if(data.total == 0){
$table.bootstrapTable('insertRow', {
index: 0,
row: {
oilType: '',
fuelType:'',
goWordCount: '',
backTankCount: '',
backTankNumber: '',
payOilCount: '',
payOilCash: '',
payOilIccard: '',
//payOilAggregate: '',
price: '',
cashAmount: '',
iccardAmount: '',
aggregateAmount: ''
}
});
}
}
});
});
function submitHandler() {
let $table = $('#table');
$.operate.save(prefix + "/add", "payOilArray=" + JSON.stringify($table.bootstrapTable('getData')) + "&changeId=" + [[${changeId}]]);
}
function getValues(index) {
}
</script>
</body>
</html>