| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | /** * @author horken wong <horken.wong@gmail.com> * @version: v1.0.0 * https://github.com/horkenw/bootstrap-table * Click to edit row for bootstrap-table */(function ($) {    'use strict';    $.extend($.fn.bootstrapTable.defaults, {        clickEdit: false    });    function setDivision(node, options){        var $option = $('<option />');        if(options){            $(options).each(function(i, v){                $option.clone().text(v.idxNum + ' ' +v.name).val(v.idxNum).appendTo(node);            })        }        else{            console.log('Please setup options first!!')        }    }    function clikcToEdit(evt, tarNode){        var txt = [], table = evt,            submit = '<button type="button" class="btn btn-primary btn-sm editable-submit"><i class="glyphicon glyphicon-ok"></i></button>',            cancel = '<button type="button" class="btn btn-default btn-sm editable-cancel"><i class="glyphicon glyphicon-remove"></i></button>';        var replaceData = function(){            txt = [];            tarNode.find('td').find('input[type="text"]').each(function(i, td){                txt.push($(td).eq(0).val());            });            tarNode.find('select').each(function(i, td){                txt.push($('#'+td.id+' option:selected').val());            });            $('#table').bootstrapTable('updateRow', {                index: table.$data.thId,                row: {                    noOld: txt[0],                    area: tarNode.find('select').eq(0).children(':selected').text(),                    town: tarNode.find('select').eq(1).children(':selected').text(),                    address: txt[1]                }            });            $('#tooling').remove();            table.editing = true;            // updateToServerSide(table.$data.itemid, txt);            return false;        };        var recoveryData = function(){          $('#table').bootstrapTable('updateRow', {                index: table.$data.thId,                row: {},            });          $('#tooling').remove();          table.editing = true;          return false;        };        if(table.editing){            var  rootid = 0;            table.editing = false;            table.columns.forEach(function(column, i){                if (!column.editable) return;                switch(column.editable){                    case 'input':                        var div=$('<div class="editable-input col-md-12 col-sm-12 col-xs-12" style="position: relative;"/>');                        txt.push(tarNode.find('td').eq(column.fieldIndex).text());                        div.append($('<input type="text" class="form-control input-sm"/>'));                        div.append($('<span class="clear"><i class="fa fa-times-circle-o" aria-hidden="true"></i></span>'));                        tarNode.find('td').eq(column.fieldIndex).text('').append(div);                        break;                    case 'select':                        var select=$('<select id="'+column.field+'">'), options = $.selectArray[column.field];                        tarNode.find('td').eq(column.fieldIndex).text('').append(select);                        setDivision($('#'+column.field), options);                        break;                    case 'textarea':                        break;                    default:                        console.log(column.fieldIndex+' '+column.editable);                }            }, evt);            for(var i=0, l=txt.length; i<l; i++){                tarNode.find('input[type="text"]').eq(i).val(txt[i]);            }            tarNode.find('td').last().append('<div id="tooling" class="editable-buttons"/>');            $('.clear').on('click', function(){ $(this).parent().find('input').val('');});            $(submit).on('click', replaceData).appendTo('#tooling');            $(cancel).on('click', recoveryData).appendTo('#tooling');        }    }    function updateToServerSide(item, data){        var itemid = $(item).find('a').attr('href').match(/\d+/g)[0];        var datas = {'treeId': itemid, 'oldTreeSerialNo': data[0], 'adminDivision': data[2], 'adminUnit': data[3], 'treeAddr': data[1]}; //傳送至伺服器端的Data產生處,需手動修改對應表格        store( 'data/update', datas)    }    var BootstrapTable = $.fn.bootstrapTable.Constructor,        _initTable = BootstrapTable.prototype.initTable,        _initBody = BootstrapTable.prototype.initBody;    BootstrapTable.prototype.initTable = function(){        var that = this;        this.$data = {};        _initTable.apply(this, Array.prototype.slice.apply(arguments));        if (!this.options.clickEdit) {            return;        }    };    BootstrapTable.prototype.initBody = function () {        var that = this;        _initBody.apply(this, Array.prototype.slice.apply(arguments));        if (!this.options.clickEdit) {            return;        }        var table = this.$tableBody.find('table');        that.editing=true;        table.on('click-row.bs.table', function (e, row, $element, field) {            if(field ==='no') return; //|| field ==='noOld'            this.$data.thId = $element.data().index;            this.$data.itemid = $element.data().uniqueid;            this.$data.divi = parseInt(row.area);            this.$data.town=parseInt(row.town);            clikcToEdit(this, $element);        }.bind(this));    };})(jQuery);
 |