在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);
}
}
答案 0 :(得分:1)
你得到错误
无法获得财产“防止违规”&#39;未定义或空引用
因为getEventArgs仅在save
事件中可用时才可用,但在onchange
事件中不可用。
如果要停止保存,还应在保存事件中添加验证检查。
答案 1 :(得分:0)
我可以建议您尝试将其更新为方法的完整版本,即 Xrm.Page.context.getEventArgs.preventDefault()。
我理解在CRM中工作时你必须引用全名,以便你的函数能够看到防止默认方法。
希望这有助于但如果不是在寻求解决方案的好运