如何使一个文本框出现在SuiteScript下拉菜单中选择一个选项后?

问题描述 投票:4回答:2

我是新来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产生的纯的形式。

javascript drop-down-menu netsuite suitescript
2个回答
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
投票

使用客户端脚本,你可以隐藏和显示在Suitelet表单中的字段。因此,创建一个字段,并使用客户端脚本或suitelet只(setdisplaytype)隐藏字段。

在客户端脚本,你可以定义场变化的功能,如果该选项为他人则显示文本字段。

我加入了一些参考代码段用于功能

对于suitelet设置客户端脚本

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();
                        }
                    }
                }
© www.soinside.com 2019 - 2024. All rights reserved.