Form上的某个field值发生改变时可以触发该field的OnChange事件。在OnChange事件处理器中,你可以对改变后的新值进行检测,如果新值不符合要求,你可以“取消”该OnChange事件。注意,本文中的例子,取消事件后,新值并不会恢复为旧值,而只是给用户发出错误提示,并将focus集中在被改变的field上。
if (typeof (Contact
Library) == "un
defined") { ContactLibrary = { __">namespace: true }; } ContactLibrary = { Name: "ContactLibrary", OnLoad:
function () { Xrm.
Page.getAttribute("telephone1").addOnChange(function () { ContactLibrary.CheckTelephoneCode("telephone1"); }); }, CheckTelephoneCode: function (fieldname) { var phoneNumber = Xrm.Page.getAttribute(fieldname).getValue(); if (phoneNumber != null && phoneNumber.length != 10) {
alert("telephone number must be 10 digits!"); event.returnValue = false; return false; } else { return true; } }, OnSave: function (ExecutionObj) { if (ContactLibrary.CheckTelephoneCode("telephone1") == false) { Xrm.Page.getControl("telephone1").setFocus(); ExecutionObj.getEventArgs().preventDefault(); } } }
在写本文的时候,将focus集中在发生改变的field上使用Xrm.Page.ui 的setFocus方法并不管用,所以我采用了event.returnValue = false 的方法。另外如何取消OnSave事件,可以参看我的另一篇文章。