js/ts 填充表单函数

发布时间 2023-09-25 11:33:48作者: 刘东才

直接代码

 

function from(form: string | HTMLFormElement, data: { [key: string]: any }) {
    let target: Element | null;
    if (form instanceof Element) {
        target = form;
    } else {
        target = document.getElementById(form);
    }
    if (target) {
        const names = Object.keys(data);
        for (let i = 0; i < names.length; i++) {
            const name = names[i];
            const els = target.querySelectorAll(`[name=${name}]`);
            for (let j = 0; j < els.length; j++) {
                const el = els[j];
                if (el) {
                    const elName = el.tagName;
                    if ("INPUT" === elName) {
                        const type = el.getAttribute("type") || "";
                        if (["checkbox", "radio"].includes(type)) {
                            (el as HTMLInputElement).checked = Boolean(data[name]);
                            (el as HTMLInputElement).value = String(Boolean(data[name]))
                        } else {
                            (el as HTMLInputElement).value = data[name]
                        }
                    } else if ("SELECT" === elName) {
                        (el as HTMLSelectElement).value = data[name]
                    }
                }
            }
        }
    }
}