Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dynamics CRM 2011/13-当用户没有´时,可在表单字段上重新启用onChange事件;不要改变_Javascript_Forms_Dynamics Crm 2011_Dynamics Crm 2013 - Fatal编程技术网

Javascript Dynamics CRM 2011/13-当用户没有´时,可在表单字段上重新启用onChange事件;不要改变

Javascript Dynamics CRM 2011/13-当用户没有´时,可在表单字段上重新启用onChange事件;不要改变,javascript,forms,dynamics-crm-2011,dynamics-crm-2013,Javascript,Forms,Dynamics Crm 2011,Dynamics Crm 2013,我有一个电子邮件表单字段的验证方法,在该字段的onchange事件中调用该方法,并在验证失败时将焦点设置回该字段: function ValidateEMail(event) { var source = event.getEventSource(); var value = source.getValue(); var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\"

我有一个电子邮件表单字段的验证方法,在该字段的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;    
    }
 } 
函数ValidateEMail(事件){
var source=event.getEventSource();
var value=source.getValue();
变量re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.]124;([a-zA Z-0-9]+-9]+-Z].[a-2]);
如果(值=“”| |!重新测试(值))
{
Xrm.Utility.alertDialog('bite-geben-Sie-eine-gültige电子邮件地址ein',空);
Xrm.Page.getControl(event.getEventSource().getName()).setFocus(true);
返回false;
}
} 
}


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

你有几个选择:

  • 如果字段无效,请重新验证保存并阻止保存
  • 清除该字段(设置为null)并使其成为必需
  • 从validate email中调用change,但插入一个条件以避免无限循环
  • 使用电子邮件类型的文本字段,让crm为您做这些事情
  • 使用jquery并向失去焦点事件添加绑定

  • 这个答案可能会在几个月后给出,但为了将来的参考,我建议将表单字段定制为一行文本,并带有格式选项“Email”

    将format选项设置为“Email”将启用用户输入字段的客户端验证,而不需要JavaScript

    设置可用于Dynamics CRM中单行文本数据类型的格式选项