NetSuite Online HTML 表格 - link 在 NetSuite 中列出
NetSuite Online HTML Form - link to list within NetSuite
我有一个在线 html 表单,它使用 select 字段从现有记录列表(特别是邮政编码)中选择一条记录,然后自动填充表单上的其他字段地址。这一切都很好,除了表单上的下拉列表到目前为止只上升了。我需要知道这是否是 html 下拉列表的限制,或者首先可以将多少条记录传递给列表?
此外,理想情况下,如果有一种方法可以通过自动完成来完成,那么当您开始输入邮政编码时,它只会显示以所述字符开头的那些 - 这可能吗?
我会为您的在线表单设置自定义 html 模板。然后您可以隐藏标准字段并包含自定义文本输入字段。将事件处理程序附加到自定义字段以通过 suitelet 进行查找。如果自动填充已经开始工作,那么您的事件处理程序可以在匹配完成后更新隐藏的标准字段,以便 Netsuite 的内置采购工作。
一个示例套件。 get...函数 return 任何可以被您的页面 JSON 使用的东西。
function service(request, response) {
var obj = {
success: true
};
try {
var step = request.getParameter('step') || 'start';
switch (step) {
case 'start':
obj.choices = getChoiceRoots(request.getParameter('itemid'), request.getParameter('treeName'));
break;
case 'other':
obj.choices = getChoiceChildren(request.getParameterValues('choiceIds[]') || request.getParameterValues('choiceIds'));
break;
default:
throw "Unexpected step: " + step;
}
} catch (e) {
obj.success = false;
obj.message = e.message || e.toString();
nlapiLogExecution('ERROR', "error getting choices", (e.message || e.toString()) + "<br> " + request.getURL() + (e.getStackTrace ? "<br> " + e.getStackTrace().join("<br> ") : ''));
}
_sendJS(request, response, obj);
function _sendJS(request, response, respObject) {
response.setContentType('JAVASCRIPT'); //'application/json');
var callbackFcn = request.getParameter("jsoncallback") || request.getParameter('callback');
if (callbackFcn) {
response.writeLine(callbackFcn + "(" + JSON.stringify(respObject) + ");");
} else response.writeLine(JSON.stringify(respObject));
}
}
然后在您的页面上会有一个使用 suitelet 的脚本。 (suitelet 需要在没有登录的情况下可用,观众需要是全部。
自定义模板或关联脚本文件中的代码类似于:
//suiteletURL will look like https://forms.netsuite.com. RegExp makes that root relative to the domain you are on.
//This is not actually necessary when using JSONP but it can be useful in some circumstances so I left it in this example.
$.getJSON(suiteletURL.replace(new RegExp(".*://[^/]+/"), '/')+"&"+$.param(params) +"&callback=?",
function(d, txtStatus,xhr){
if(d.errorCode){
if(fail){
fail(xhr, txtStatus, null);
}else{
showMessage("#appMessage", d.errorMessage || ("Request Failed with code: "+xhr.responseJSON.errorCode));
}
}else{
success(d, txtStatus, xhr); // your custom success handler. d is already an object; no parsing necessary.
}
});
我有一个在线 html 表单,它使用 select 字段从现有记录列表(特别是邮政编码)中选择一条记录,然后自动填充表单上的其他字段地址。这一切都很好,除了表单上的下拉列表到目前为止只上升了。我需要知道这是否是 html 下拉列表的限制,或者首先可以将多少条记录传递给列表? 此外,理想情况下,如果有一种方法可以通过自动完成来完成,那么当您开始输入邮政编码时,它只会显示以所述字符开头的那些 - 这可能吗?
我会为您的在线表单设置自定义 html 模板。然后您可以隐藏标准字段并包含自定义文本输入字段。将事件处理程序附加到自定义字段以通过 suitelet 进行查找。如果自动填充已经开始工作,那么您的事件处理程序可以在匹配完成后更新隐藏的标准字段,以便 Netsuite 的内置采购工作。
一个示例套件。 get...函数 return 任何可以被您的页面 JSON 使用的东西。
function service(request, response) {
var obj = {
success: true
};
try {
var step = request.getParameter('step') || 'start';
switch (step) {
case 'start':
obj.choices = getChoiceRoots(request.getParameter('itemid'), request.getParameter('treeName'));
break;
case 'other':
obj.choices = getChoiceChildren(request.getParameterValues('choiceIds[]') || request.getParameterValues('choiceIds'));
break;
default:
throw "Unexpected step: " + step;
}
} catch (e) {
obj.success = false;
obj.message = e.message || e.toString();
nlapiLogExecution('ERROR', "error getting choices", (e.message || e.toString()) + "<br> " + request.getURL() + (e.getStackTrace ? "<br> " + e.getStackTrace().join("<br> ") : ''));
}
_sendJS(request, response, obj);
function _sendJS(request, response, respObject) {
response.setContentType('JAVASCRIPT'); //'application/json');
var callbackFcn = request.getParameter("jsoncallback") || request.getParameter('callback');
if (callbackFcn) {
response.writeLine(callbackFcn + "(" + JSON.stringify(respObject) + ");");
} else response.writeLine(JSON.stringify(respObject));
}
}
然后在您的页面上会有一个使用 suitelet 的脚本。 (suitelet 需要在没有登录的情况下可用,观众需要是全部。
自定义模板或关联脚本文件中的代码类似于:
//suiteletURL will look like https://forms.netsuite.com. RegExp makes that root relative to the domain you are on.
//This is not actually necessary when using JSONP but it can be useful in some circumstances so I left it in this example.
$.getJSON(suiteletURL.replace(new RegExp(".*://[^/]+/"), '/')+"&"+$.param(params) +"&callback=?",
function(d, txtStatus,xhr){
if(d.errorCode){
if(fail){
fail(xhr, txtStatus, null);
}else{
showMessage("#appMessage", d.errorMessage || ("Request Failed with code: "+xhr.responseJSON.errorCode));
}
}else{
success(d, txtStatus, xhr); // your custom success handler. d is already an object; no parsing necessary.
}
});