Dynamics CRM 2011/13 - 当用户未进行更改时,在表单字段上重新启用onChange事件

时间:2014-02-05 15:15:54

标签: javascript forms dynamics-crm-2011 dynamics-crm-2013

我有一个电子邮件表单字段的验证方法,该字段在字段的onchange事件上调用,如果验证失败,则将焦点设置回字段:

function ValidateEMail(event) {

    var source = event.getEventSource();
    var value = source.getValue();
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/igm;

    if (value == '' || !re.test(value))
    {
      Xrm.Utility.alertDialog('Bitte geben Sie eine gültige E-Mail Adresse ein', null);
      Xrm.Page.getControl(event.getEventSource().getName()).setFocus(true);
      return false;    
    }
 } 

}

问题是如果焦点在下次离开字段并且用户没有进行任何更改,则不会再次触发onchange事件。不幸的是,没有我可以使用的lostFocus事件。你有什么建议可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您有几个选择:

  1. 如果字段无效,则重新验证onsave并阻止保存
  2. 清除字段(设置为null)并进行必填。
  3. 从验证电子邮件中调用更改,但插入条件以避免无限循环。
  4. 使用电子邮件类型的文本字段,让crm为您做这些事情。
  5. 使用jquery并将绑定添加到丢失的焦点事件

答案 1 :(得分:0)

这个答案可能在几个月之后,但为了将来参考,我建议将表单字段定制为单行文本,格式选项为&#34;电子邮件&#34;。

将格式选项设置为&#34;电子邮件&#34;将允许客户端验证字段上的用户输入,而无需JavaScript。

Here is a reference指示Dynamics CRM中单行文本数据类型可用的格式选项。