CRM:Javascript检查电子邮件验证并防止保存,如果无效

时间:2015-09-22 20:14:32

标签: javascript crm preventdefault

在CRM 2013内部部署中,我正在编写一个检查电子邮件验证的JavaScript。该字段可以包含电子邮件地址列表,但是如果电子邮件无效,则不会让用户保存表单。

我得到了分裂和验证,现在工作正常。

但是我仍然遇到问题,以防止用户保存表单。

在OnChange上,我选中"传递执行上下文的框作为第一个参数"

我按照MSDN文章的建议使用了preventDefault()函数但是我一直收到错误消息"无法获取属性' preventDefault'未定义或空引用"。

任何想法都表示赞赏。这是我的代码:

function EmailTest(EmailField)
{
var Email = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
if(Email.test(EmailField))
    {
    return true;
    }
else
    {
    return false;
    }
} 

function CheckEmailString(context)
{
try
{
    var EmailString = context.getEventSource().getValue();
    if (EmailString != null)
    {
        var separator = [" ", ",", ";", "|"];
        var EmailArray = EmailString.split(separator);
        var Flag = true;

        for(var i = 0;i < EmailArray.length;i++)
        {
            if(!EmailTest(EmailArray[i]))
            {
                Flag = false;
                break;          
            }
        }
        if(Flag != true)
        {
            alert("The list of emails entered contain invalid email format. Please re-enter");
            context.getEventArgs().preventDefault();
        }
    }
}
catch(err)
{
    alert(err.message);
}

}

2 个答案:

答案 0 :(得分:1)

你得到错误

  

无法获得财产“防止违规”&#39;未定义或空引用

因为getEventArgs仅在save事件中可用时才可用,但在onchange事件中不可用。

如果要停止保存,还应在保存事件中添加验证检查。

答案 1 :(得分:0)

我可以建议您尝试将其更新为方法的完整版本,即 Xrm.Page.context.getEventArgs.preventDefault()。

我理解在CRM中工作时你必须引用全名,以便你的函数能够看到防止默认方法。

希望这有助于但如果不是在寻求解决方案的好运