如何使用javascript将字段强制设置为false

How can i set field mandatory to false using javascript

本文关键字:设置 false 字段 何使用 javascript      更新时间:2023-09-26

我是使用javascript编写netsuite脚本的新手。我想问,如何使用javascript将字段强制设置为false。

希望有人能帮助我。

注意:

如果在客户端脚本中使用nlapiGetField(fieldname)返回nlobjField对象,则返回的对象为read-only。这意味着您可以对对象使用nlobjField getter方法,但不能使用nlobjField setter方法设置字段属性。

但是您可以使用nlapiSubmitRecord(item_obj, true, true);忽略记录上的强制字段。有关更多详细信息,请查看方法中包含的参数
nlapiSubmitRecord(record, doSourcing, ignoreMandatoryFields);

您使用的方法是正确的,但客户端脚本中不支持setMandatory。相反,您可以尝试在User Event,Before Load事件处理程序中使用完全相同的代码。

与文档相反,nlapiGetField返回的nlobjField不是只读的。一些setter方法在客户端仍然有效(例如setDisplayType)。您可以试验哪些有效,哪些无效,但客户端已确认不支持setMandatory

在客户端脚本上使用SS2.0,您可以强制使用以下代码:

var newSupervisorField = context.currentRecord.getField('custrecord_new_supervisor');
newSupervisorField.isMandatory = true;

这是基于@erictgrubaugh和@user3627301 的输入对我有效的方法

function fieldChanged(type,name){   
    var metodPayment=nlapiGetFieldText('field_id_to_check');
    if ((name == 'field_id_to_monitor_for_change') && (metodPayment=='Financing')) {            
        var field1 = nlapiGetField('field_id_to_be_disabled'); 
        field1.setDisplayType('disabled');
    }               
}

您可以使用SuiteScript 2.0设置强制,尽管它在1.0中不起作用。

下面是一个在客户记录上使用客户端脚本的示例片段

var currentRecord;require(['N/currentRecord'], (currentRecord) => {
  var field = currentRecord.get().getField('comments');
  field.isMandatory = true;
})

也许我的回答已经晚了,但对于其他看到这篇文章的人来说,这是我通过客户端脚本完成的方式。

nlapiSetFieldMandatory('yourFieldId', true);

这已经测试过了,因为我经常使用它。虽然有些人说你不能通过客户端将字段设置为必填字段,但你可以。不过,我在netsuite文档中没有找到任何关于这方面的文档。