原创

js-监听dom改变-监听table中增加一行tr-监听并触发change事件

// 取最后一行之前的所有行 方式1
$("#tr_service tr").not(":last").each(function () {
    $(this).find("input[name='employee']").val(ids);
    var select = $(this).find("select[data-name='employeeSelector']");
    var idArray = ids.split(",");
    select.val(idArray);
    select.trigger("change");//触发一下change事件
});
/**
 * 初始页面默认将第一个员工作为领料人问题
 */
(function initDefaultStuffReceiverListener() {//监听 某一dom组件的变化
    // 只处理工单
    if (_isSupportInitDefaultStuffReceiverListener()) {
        var _targetDom = "#tr_stuff";
        if (window.MutationObserver) {
            var article = document.querySelector(_targetDom);
            var options = {
                'childList': true,
                'attributes': true
            };
            var observer = new MutationObserver(function (mutations, observer) {
                mutations.forEach(function (mutation) {//只会回调一次
                    // 只监听 新建行操作
                    if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                        tryToGet1stItem1stEmploee($(mutation.addedNodes[0]));
                    }
                });
            });
            observer.observe(article, options);
        }
    }
})();

function tryToGet1stItem1stEmploee($targetRow) {
    var _rowLength = $("#tr_stuff tr").length;
    if (_rowLength < 1) {
        return;
    }

    //从会员卡批量添加材料,是在列表中直接插入多行,不影响最后一行空白行
    setDefaultStuffReceiver($targetRow);

    //通过输入框搜索添加材料,是在最后一行空白行载入材料,然后新增一行空白行
    if (_rowLength - 2 >= 0 && get1stItem1stEmploee()) {
        $targetRow = $("#tr_stuff tr:eq(" + (_rowLength - 2) + ")");
        setDefaultStuffReceiver($targetRow);
    }

    //处理可能未选择的情况(会员卡批量材料,最后一行空白行暂不处理: _rowLength -1);
    var $targetRowSelect;
    for (var _i = 0; _i < _rowLength -1; _i++) {
        $targetRow = $("#tr_stuff tr").eq(_i);
        $targetRowSelect = $targetRow.find("select").last();
        if ($targetRow && !$targetRowSelect.val()) {
            //取项目列表服务技师第一个人
            setDefaultStuffReceiver($targetRow);
        }
    }
}

function setDefaultStuffReceiver($targetRow) {
    var stockOutNumber = $targetRow.find("input[name=stockOutNumber]").val();
    var $targetRowSelect;
    //已领料不处理
    if (!stockOutNumber || parseInt(stockOutNumber) === 0) {
        $targetRowSelect = $targetRow.find("select").last();
        var defaultStuffReceiverId = get1stItem1stEmploee();
        if (!defaultStuffReceiverId) {
            //取项目列表服务技师第一个人
            defaultStuffReceiverId = $targetRowSelect.find('option:eq(1)').val();
        }
        $targetRowSelect.val(defaultStuffReceiverId);
        $targetRowSelect.last().trigger("change");
    }
}
/*
 * 默认领料人监听的单据范围
 * 工单、理赔单 默认领料人
 */
function _isSupportInitDefaultStuffReceiverListener() {
    if (typeof maintainTypePermission !== "undefined"
        && (maintainTypePermission === "GD" || maintainTypePermission === "LPD")) {
        return true;
    }
    return false;
}
正文到此结束
本文目录