在SuiteScript 2.0中设置客户端脚本的内联HTML字段

时间:2017-08-29 07:50:51

标签: javascript netsuite suitescript2.0

我无法使用SuiteScript 2.0设置INLINEHTML类型的字段。但是,相同的字段适用于SuiteScript 1.0。 以下是代码段:

IndexError:  too many indices for array

6 个答案:

答案 0 :(得分:1)

不幸的是,这是一个实例,其中在SS 2.0中的record.getValue()或currentRecord.getValue()后面实现的逻辑存在缺陷。在SS 1.0中,nlapiGetFieldValue()通过的验证次数少于SS 2.0版本。这是一个例子(希望改变得足以让NetSuite不会因违反他们的IP而将我投入监狱)。这是您请求值时发生的情况。

function getTheValue(options)
        {
            var fieldId;

            fieldId = '....';// Do a bunch of logic to validate the options parameter is correct

            return doGetTheValue(fieldId);
        }

        function doGetTheValue(fieldId)
        {
            var fieldObj = goodOlegetField(fieldId); // goodOle being our 1.0 api prefix....
            // the function call above returns null preventing your request from succeeding.
            var value;
            if (fieldObj == null)
                return undefined;


        }

我希望这是有道理的,虽然它不是一个答案,但它可以提供有关您获得答案的原因的见解。它也是你不疯狂的坚实认可。我经常发现在使用SS 2.0时我需要这种保证。

答案 1 :(得分:0)

我认为你需要currentRecord模块。

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
// In SuiteScript 2.0   
define(['N/search', 'N/currentRecord'], function(search, currentRecord) {
    return {
        pageInit: function(context) {
            var currentRecord = context.currentRecord;
            // Set Value (This does not set any data)
            currentRecord.setValue({ fieldId: 'inline_html_field', value: '<div>Test Value</div>' });
            // Get value (Returns undefined)
            currentRecord.getValue({ fieldId: 'inline_html_field'});
        }
    }
});

答案 2 :(得分:0)

在处理内联html字段时,我只是将它们视为客户端的普通html。为了避免问题,我通常会有一个默认值

// User Event Before Load
nlapiSetFieldValue('custbody_inline_field', '<div id="myuniqueid">default content</div>');

var fld = form.addField('custpage_inline_field'...); // look up field creation in the help.
fld.setDefaultValue('<div id="myuniqueid">default content</div>');

然后在客户端上操作$(&#34;#myuniqueid&#34;)的内容。您不必使用jQuery,但它现在包含在NS GUI中。

答案 3 :(得分:0)

我有类似的问题,您需要使用suitescript 1.0在NetSuite中操作内联html字段。但是,您可以使用以下方法来代替将整个代码从suitescript 2.0转换为1.0:

window.nlapiSetFieldValue('YOUR_FIELDID', '<a>YOUR HTML CONTENT</a>');

通过放置窗口。您可以在Suitescript 2.0中使用任何SuiteScript 1.0 API!

答案 4 :(得分:0)

使用它可能会有所帮助:

var val = currentRecord.getValue({ fieldId: 'inline_html_field'});
log.debug({title:test,details:JSON.stringify(val);})

答案 5 :(得分:0)

最近,我尝试使用UserEvent ScriptType设置一个INLINEHTML类型的字段,该字段可以工作。 ClientScript仅在编辑记录时可以工作。