从SuiteScript的下拉菜单中选择一个选项后,如何显示文本框?

时间:2019-02-08 02:18:14

标签: javascript drop-down-menu netsuite suitescript

我是SuiteScript的新手。现在,我正在尝试使用Suitelet制作表单。在此表单中,我想向Suitelet添加逻辑,如果用户从下拉菜单中选择一个选项,则该选项将使文本框出现,以便用户在该选择中输入更多详细信息。到目前为止,这是我的代码。

function suitelet(request, response) {

    //create form
    var form = nlapiCreateForm('Form Title');

    var a = 'a';
    var b = 'b';
    var other = 'Other';

    // adds dropdown menu
    var selectField = form.addField('custpage_menu', 'select', 'Random Dropdown Menu');
    selectField.addSelectOption('', '', false);
    selectField.addSelectOption(a, a, false);
    selectField.addSelectOption(b, b, false);
    selectField.addSelectOption(other, other, false);
    selectField.setMandatory(true);

    //render a button for the user to submit form
    form.addSubmitButton('Submit');

    //load form
    response.writePage(form);
}

我希望当用户选择选项“其他”时出现文本框。因此,在这种情况下,代码行selectField.addSelectOption(other, other, false);表示标记为“其他”的选择选项。这种选择是在用户单击“提交”按钮之前发生的,因此我不认为此时会发生任何POST请求。

我不确定用户每次从下拉菜单中选择一个选项时会触发哪种事件。如果我可以通过代码捕获该事件,那么我希望我应该能够根据选择显示一个文本框。

编辑:我忘了提到一件事。我根本不使用记录。这只是Suitelet生成的纯格式。

2 个答案:

答案 0 :(得分:2)

您需要将客户端脚本关联到Suitelet。然后,当用户从下拉菜单中选择一个选项时,使用字段更改功能捕获事件。在Suitelet上创建文本框时,必须隐藏该文本框,然后像下面这样在客户端中使用field.isDisplay属性:

function fieldChanged(){ 
   if (context.fieldId == 'custpage_menu') {
      var boxField = context.currentRecord.getField('custpage_your_text_box_id');
      if(other was selected){
          boxField.isDisplay = true;
      } else {
          boxField.isDisplay = false;
      }
   } 
}

我在此处添加1.0中的代码,尽管我最初是在2.0中添加的,但是方法是相同的,如果对其他人有用,我将保留2.0版:

function clientFieldChanged(type, name, linenum){
   if(name == 'custpage_menu') {
      var optionSelected = nlapiGetFieldValue('custpage_menu');
      if(other was selected){
         nlapiGetField('custpage_your_text_box_id').setDisplayType('normal');
      } else{
         nlapiGetField('custpage_your_text_box_id').setDisplayType('hidden');
      }
   }
}

答案 1 :(得分:1)

使用客户端脚本,您可以以Suitelet形式隐藏和显示该字段。因此,创建一个字段并仅使用客户端脚本或Suitelet(setdisplaytype)隐藏该字段。

在客户端脚本中,您可以定义字段更改功能,如果该选项是其他选项,则显示文本字段。

我正在为功能添加一些参考代码片段

用于在套件中设置客户端脚本

form.clientScriptFileId = '264221';

对于客户端的字段更改

  /*Field Change event*/
               function fieldChanged(scriptContext) {
                    var records = scriptContext.currentRecord;
                    if (scriptContext.fieldId == "datefiltertype") {
                        var type = records.getValue({
                            fieldId: 'datefiltertype'
                        });

                        if (type == "NOTWITHIN" || type == "WITHIN") {
                            jQuery("#fromdate_fs_lbl_uir_label").html("To");
                            jQuery("#todate_fs_lbl_uir_label").html("From");
                            jQuery("#fromdate_fs_lbl_uir_label").show();
                            jQuery("#fromdate").show()
                        } else {
                            jQuery("#fromdate").val("");
                            jQuery("#fromdate_fs_lbl_uir_label").hide();
                            jQuery("#fromdate").hide();
                        }
                    }
                }