You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在查看模式下在NetSuite客户表单显示按钮?

解决NetSuite客户表单按钮仅在查看模式显示的问题

要让自定义按钮只在查看模式(View Mode)显示,核心是在脚本中精准判断页面加载模式,仅在符合条件时创建或显示按钮。以下分SuiteScript版本给出具体实现:

SuiteScript 2.x 实现方案

方案1:User Event脚本中按需添加按钮(推荐)

在beforeLoad事件里判断当前模式,只有查看模式下才创建按钮,从根源避免按钮在其他模式出现:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 */
define(['N/ui/serverWidget'], function(serverWidget) {
    function beforeLoad(context) {
        // 仅在查看模式执行按钮添加逻辑
        if (context.type === context.UserEventType.VIEW) {
            const form = context.form;
            // 添加跳转按钮
            form.addButton({
                id: 'custpage_external_link_btn',
                label: '跳转至外部页面',
                functionName: 'redirectToExternalPage'
            });
            // 关联处理跳转的客户端脚本
            form.clientScriptModulePath = './external_redirect_client.js';
        }
    }

    return {
        beforeLoad: beforeLoad
    };
});

对应的客户端脚本(external_redirect_client.js):

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define([], function() {
    // 跳转逻辑函数
    function redirectToExternalPage() {
        window.open('https://your-target-url.com', '_blank');
    }

    return {
        redirectToExternalPage: redirectToExternalPage
    };
});

方案2:Client Script控制按钮显隐

如果按钮已通过其他方式添加,可在客户端脚本的pageInit事件中根据当前模式切换显示状态:

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define(['N/currentRecord'], function(currentRecord) {
    function pageInit(context) {
        const rec = context.currentRecord;
        const btnElement = document.getElementById('custpage_external_link_btn');
        
        // 仅在查看模式显示按钮,其他模式隐藏
        if (rec.mode === 'view') {
            btnElement.style.display = 'inline-block';
        } else {
            btnElement.style.display = 'none';
        }
    }

    function redirectToExternalPage() {
        window.open('https://your-target-url.com', '_blank');
    }

    return {
        pageInit: pageInit,
        redirectToExternalPage: redirectToExternalPage
    };
});

SuiteScript 1.x 实现方案

针对旧版脚本,在User Event的beforeLoad中判断模式:

/**
 * @NApiVersion 1.x
 * @NScriptType UserEventScript
 */
function beforeLoad(type, form, request) {
    // 仅在查看模式添加按钮
    if (type === 'view') {
        form.addButton('custpage_external_link_btn', '跳转至外部页面', 'redirectToExternalPage()');
        // 绑定客户端脚本(替换为你的脚本ID)
        form.setScript('customscript_external_redirect_client');
    }
}

// 客户端脚本中的跳转函数
function redirectToExternalPage() {
    window.open('https://your-target-url.com', '_blank');
}

排查要点

  • 确认脚本已部署到客户记录类型,且部署状态为「已启用」
  • 检查按钮ID是否唯一,避免与系统或其他自定义按钮冲突
  • 验证模式判断逻辑:SuiteScript 2.x用context.UserEventType.VIEW,1.x直接用字符串'view'
  • 若用客户端脚本控制显隐,需确保按钮的DOM ID与脚本中一致(可通过浏览器开发者工具确认)

内容的提问来源于stack exchange,提问作者Jaime Espósito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 19:01:27