首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ServiceNow Script onSubmit不能正常工作

ServiceNow Script onSubmit不能正常工作
EN

Stack Overflow用户
提问于 2015-05-16 00:46:22
回答 2查看 4.8K关注 0票数 2

我使用的是ServiceNow平台。我正在编写一个Catalog客户端脚本来验证Catalog Item record producer上的表单字段。

如果验证没有通过检查,我将使用return false来停止表单的提交。

我已经通过输入无效数据(带有特殊字符的组名或已经存在的组名)对此进行了测试,它捕获了问题并显示错误消息。我可以输入无效的数据并多次提交,它是有效的。

然而,问题是:

在我第一次输入无效数据并提交,然后再次按下submit按钮更正数据之后,脚本似乎“停止”运行。它只是坐在那里,什么也不做。我必须重新加载表单,这是不可取的。

控制流是怎么回事?如果数据无效,我如何干净利落地停止表单,然后允许用户更正错误并再次按下submit按钮继续操作?

我可以断定脚本不会再次运行,因为每次脚本运行时,我都会弹出一个警告框,上面写着"script run“。它只是在提交无效数据,然后输入一些有效数据并按submit后,在某一时刻停止运行。

代码语言:javascript
复制
function onSubmit() {
    g_form.hideAllFieldMsgs('error');
    alert("script run");

    //Group Name contain letters numbers and dashes only
    var group_name = g_form.getValue('u_group_name');
    // Group name regular expression
    var regGrpName = /^([A-Za-z0-9\-]+)$/;
    // Check name against regular expression
    if (regGrpName.test(group_name) == false) {
        g_form.showFieldMsg('u_group_name', "Group Name must contain only letters, numbers or dashes. ", 'error');
        //Do not submit
        //g_form.submitted = false;
        return false;
    }

    //Check if google group already exists
    var rec = new GlideRecord('u_google_user_accounts');
    rec.addQuery('u_account_email', new_group_email);
    rec.query();

    while (rec.next()) {
        g_form.showFieldMsg('u_group_name',rec.u_account_email + " already exists as an account.",'error');
        return false;
    }

    //Group Members Email List separated by commas
    // Hide error message
    //g_form.hideErrorBox('u_group_members');
    var group_members = g_form.getValue('u_group_members');
    // Comma separate list
    var member_split = group_members.split(',');
    // Loop over list of email addresses
    for (var n = 0; n < member_split.length; n++) {
        // Trim whitespace
        var member_info = trim ? member_split[n].trim() : member_split[n];
        // Email validation regular expression
        var regEmail = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
        // Check each item against regular expression
        if (member_info.search(regEmail) == false) {
            g_form.showFieldMsg('u_group_members', "Group Members contains an invalid email address. " + member_info, 'error');
            //Do not submit
            //g_form.submitted = false;
            return false; 
        } else if (member_info.search(validRegExp) == true) {
            g_form.setValue('u_group_members', group_members);  
        }
    }
    return true;
}
EN

Stack Overflow用户

发布于 2015-06-01 05:56:52

我很高兴你在上面找到了一个解决方案,但我也想留下评论,询问你是否尝试过try{} catch{}块来处理无效数据?

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30264721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档