我想使用“自定义表单”功能向 NetSuite 表单添加单选按钮,但似乎无法创建单选自定义字段。
我尝试在NetSuite中创建一个新的自定义字段,在类型字段中有各种条目,例如复选框、列表/记录、多重选择,但没有选择创建单选字段。
NetSuite 不正式支持“Radio”类型字段,因此我们需要做一些解决方法来实现它!
我创建了一个小脚本,您可以使用它轻松地将单选按钮添加到任何表单 - 您只需执行一次,您就可以在任意多种不同的表单上使用它,以添加任意数量的单选按钮!
创建内联 HTML 类型的自定义字段,并将其添加到您希望显示单选按钮的每个表单上。在“验证和默认”选项卡下,将以下内容添加到“默认值”字段中。 (不用担心,它对用户来说是不可见的)
<script>
document.addEventListener('DOMContentLoaded', function() {
try {
var t = '<div class="uir-field-wrapper uir-inline-tag uir-onoff"><span class="uir-field" data-nsps-type="field_input"><span style="white-space: nowrap; padding:0px;"><input {{CHECKED}} onchange="nlapiSetFieldValue(this.dataset.name,this.value);" data-name="{{OPTION_NAME}}" name="radio_{{OPTION_NAME}}" type="radio" value="{{OPTION_VALUE}}" class="radio" id="radio_{{RADIO_ID}}"></span></span><span class="smallgraytextnolink uir-label"><span class="labelSpanEdit smallgraytextnolink"><label for="radio_{{RADIO_ID}}"><a class="smallgraytextnolink">{{OPTION_TEXT}}</a></label></span></span></div>';
var field_labels = document.getElementsByClassName('uir-label');
var radio_fields = [];
for (var i=0,totali=field_labels.length; i<totali; i++) {
if(field_labels[i].querySelector('a').text.slice(-3).toLowerCase() != '[r]') continue;
field_labels[i].querySelector('a').text = field_labels[i].querySelector('a').text = field_labels[i].querySelector('a').text.slice(0,-3);
var id = field_labels[i].id.slice(0,-17);
var orig_field = document.getElementById(id+'_fs');
orig_field.style.display = 'none';
var orig_field_parent = orig_field.parentElement;
var options_element = orig_field.querySelector('[data-options]');
var default_opt_index = options_element.dataset.defaultOption;
var options = JSON.parse(options_element.dataset.options);
var radio_html = '';
for(var x=0,totalx=options.length; x<totalx; x++) {
if(!(options[x].value > 0)) continue;
var h1 = t;
h1 = h1.replace(/{{RADIO_ID}}/g,i+'_'+x);
h1 = h1.replace(/{{OPTION_NAME}}/g,id);
h1 = h1.replace('{{OPTION_VALUE}}',options[x].value);
h1 = h1.replace('{{OPTION_TEXT}}',options[x].text);
h1 = h1.replace('{{CHECKED}}',(x == default_opt_index ? 'checked' : ''));
radio_html += h1;
}
var radio_holder_element = document.createElement('div');
radio_holder_element.innerHTML = radio_html;
orig_field_parent.appendChild(radio_holder_element);
}
} catch(e) {
console.error('Error converting Drop-down selections to Radio Buttons.',e);
}
});
</script>
它应该看起来像这样:
创建此自定义字段后,请确保在您想要使用单选按钮的任何表单上启用/显示它。 现在有趣的部分来了!您只需将
[R]添加到
Label末尾即可将任何 List/Record 类型字段转换为 Radio Button! 之前
单选按钮修复脚本: 单选按钮修复脚本:仅此而已。您可以根据需要在任意多个不同的列表/记录类型字段上更改标签,并在末尾添加
[R],然后它们将显示为单选按钮。 如果您不使用 NetSuite 表单定制器 如果您使用 SuiteScript 1 或 2,则可以按照我在另一个问题上发布的说明进行操作:
使用 SuiteScript 创建单选按钮