我正在检查CRM表单中的phoneNumber.length。到目前为止,我得到了8-15个字符=工作可接受的支票。当我尝试堆叠一个' if'检查我得到的零字符: TypeError:无法读取属性' preventDefault'在checkPhoneNumber中为null
function checkPhoneNumber(executioncontext) {
var phoneNumber;
phoneNumber = Xrm.Page.getAttribute("telephone1").getValue();
if (phoneNumber == null) {
Xrm.Page.ui.setFormNotification("Phonenumber can't be empty", "WARNING", "telephone1nc1");
Xrm.Page.getControl("telephone1").setFocus(true);
executioncontext.getEventArgs().preventDefault();
} else {
Xrm.Page.ui.clearFormNotification("telephone1nc1");
//Insert 8-15 characters
if (phoneNumber != null) {
if (phoneNumber.length < 8 || phoneNumber.length > 15) {
Xrm.Page.ui.setFormNotification("Phonenumber must be between 8-15 chars..", "ERROR", "telephoneerror1");
Xrm.Page.getControl("telephone1").setFocus(true);
} else {
if (phoneNumber == null) {
Xrm.Page.ui.setFormNotification("Telefonnummret får inte vara tomt", "WARNING", "telephone1nc1");
Xrm.Page.getControl("telephone1").setFocus(true);
//executioncontext.getEventArgs().preventDefault(); //vid 0 bombar scriptet
} else {
Xrm.Page.ui.clearFormNotification("telephone1nc1");
}
Xrm.Page.ui.clearFormNotification("telephoneerror1");
}
/*var regex = /^\+(?:[0-9] ?){6,14}[0-9]$/;
if (regex.test(executionObj)) {
// Valid international phone number
} else {
// Invalid international phone number */
}
}
}
一旦我解决了这个问题,我将开始研究代码以检查国际格式并根据实体的国家/地区插入国家/地区代码。因此注释了 var regex 。
答案 0 :(得分:4)
您需要确保executioncontext.getEventArgs()
不为空。
在一行中最简单的方法:
executioncontext.getEventArgs() && executioncontext.getEventArgs().preventDefault();
答案 1 :(得分:1)
executionContext.getEventArgs()
仅与保存事件相关:
This method returns null for any event other than the Save event.
您的代码似乎(仅)运行OnSave。
话虽如此,强制用户填写Dynamics CRM中的字段的正常方法是使其成为Business Required(即字段变为红色星号,用户无法在不填写字段的情况下保存表单) - 不要手动制作表格通知。