Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 Dojo/Dijit设置无效消息和验证失败_Javascript_Validation_Dojo_Dijit.form - Fatal编程技术网

Javascript Dojo/Dijit设置无效消息和验证失败

Javascript Dojo/Dijit设置无效消息和验证失败,javascript,validation,dojo,dijit.form,Javascript,Validation,Dojo,Dijit.form,我有一个表单项,为该项定义了missingMessage和invalidMessage。我对该项调用表单验证方法进行验证。如果项目为空,则调用missingMessage并显示红色感叹号错误图标 当用户输入特定值时,我尝试在文本项上设置invalidMessage。如何在不硬编码文本项约束的情况下显示invalidMessage和红色感叹号 我想使用它对项目进行自定义验证。如果用户输入一个特定值,我希望验证失败并返回一个错误。我试图告诉用户,他们无法在“名字”字段中输入值“John”。我正在设置

我有一个表单项,为该项定义了missingMessage和invalidMessage。我对该项调用表单验证方法进行验证。如果项目为空,则调用missingMessage并显示红色感叹号错误图标

当用户输入特定值时,我尝试在文本项上设置invalidMessage。如何在不硬编码文本项约束的情况下显示invalidMessage和红色感叹号

我想使用它对项目进行自定义验证。如果用户输入一个特定值,我希望验证失败并返回一个错误。我试图告诉用户,他们无法在“名字”字段中输入值“John”。我正在设置红色感叹号,但未显示invalidMessage

我希望当用户单击感叹号时,他们可以看到错误消息,当他们开始键入或更改字段内容时,感叹号和错误消息不再显示

Jsp


在代码中,当ValidationTextBox传递validate方法时,设置属性invalidMessage只会更改默认的无效消息,但不会触发其显示。一种方法是采取你的方法,而不是

firstName.set("message", "John is not allowed.");
这将导致工具提示显示。为了让setMessage显示,文本框必须聚焦,因此您需要调用

firstName.focus(); 
事先在文本框上。我已经修改了你的小提琴,以得到你在这里工作时想要做的:


在代码中,当ValidationTextBox传递validate方法时,设置属性invalidMessage只会更改默认的无效消息,但不会触发其显示。一种方法是采取你的方法,而不是

firstName.set("message", "John is not allowed.");
这将导致工具提示显示。为了让setMessage显示,文本框必须聚焦,因此您需要调用

firstName.focus(); 
事先在文本框上。我已经修改了你的小提琴,以得到你在这里工作时想要做的:

为特定小部件提供单独验证规则的最佳实践方法是覆盖该小部件的默认验证器方法

var fnameTextBox = dijit.byId('fnameTextBox');
fnameTextBox.validator = function() {
   if(this.value.indexOf("John")>-1) {
     this.set("invalidMessage",this.value+" is not allowed!");
     return false;
   }
   return true;
}
//below 2 lines to programmatically validate a specific field
fnameTextBox._hasBeenBlurred = true;
fnameTextBox.validate();
//To show the message on failing the field must be focussed
fnameTextBox.focus();
验证器功能可以有自己的验证逻辑,并且只对这个字段小部件是主观的。如果必须对多个字段应用相同的函数,请定义该函数而不是匿名函数,并将其用于各个字段

但是,如果它只是一个值检查,我们可以为它提供一个regexp表达式

regExp: '^((?!John).)*$'
以下不是执行此操作的最佳实践。因为调用form.validate仍会将此字段验证为true,这是不正确的

dijit.byId("fnameTextBox")._set("state","Error");
dijit.byId("fnameTextBox").attr('_ErrorMessage', 'John is not allowed');
为特定小部件提供单独验证规则的最佳实践方法是覆盖该小部件的默认验证器方法

var fnameTextBox = dijit.byId('fnameTextBox');
fnameTextBox.validator = function() {
   if(this.value.indexOf("John")>-1) {
     this.set("invalidMessage",this.value+" is not allowed!");
     return false;
   }
   return true;
}
//below 2 lines to programmatically validate a specific field
fnameTextBox._hasBeenBlurred = true;
fnameTextBox.validate();
//To show the message on failing the field must be focussed
fnameTextBox.focus();
验证器功能可以有自己的验证逻辑,并且只对这个字段小部件是主观的。如果必须对多个字段应用相同的函数,请定义该函数而不是匿名函数,并将其用于各个字段

但是,如果它只是一个值检查,我们可以为它提供一个regexp表达式

regExp: '^((?!John).)*$'
以下不是执行此操作的最佳实践。因为调用form.validate仍会将此字段验证为true,这是不正确的

dijit.byId("fnameTextBox")._set("state","Error");
dijit.byId("fnameTextBox").attr('_ErrorMessage', 'John is not allowed');

我没有足够的声誉为上面的@Richard comment添加评论,我也知道这个问题很古老。它可能会帮助某人

对于Dojo 1.10,为了显示错误消息,.focus必须先运行,否则直到第二次验证发生时才会提示错误。此外,为了将其显示为错误,还应在代码中说明: firstName.focus; firstName.setmessage,不允许使用John。;
firstName.setstate,错误

我没有足够的声誉为上面的@Richard comment添加评论,我也知道这个问题很古老。它可能会帮助某人

对于Dojo 1.10,为了显示错误消息,.focus必须先运行,否则直到第二次验证发生时才会提示错误。此外,为了将其显示为错误,还应在代码中说明: firstName.focus; firstName.setmessage,不允许使用John。;
firstName.setstate,错误

我删除了item.focus,以便在两个项目同时出现错误时允许在这两个项目上显示感叹号。但是,当我输入该项目时,不会显示或显示消息。当我输入这些项目时,我如何才能获得要显示的消息?我刚刚编辑了小提琴,新链接位于原始帖子中,以删除if-else语句。我要做的是,首先执行表单验证,然后执行任何后续的附加验证检查,您可以在之后进行定义。我面临的唯一问题是,如果两个字段都有错误,则在我输入字段时不会显示消息。我需要用户能够读取错误。当我移除焦点时,感叹号会出现在两个位置,但是消息不会消失
佩尔。这是一把小提琴,我不完全确定你要的是什么,但我确实清理了你的代码,所以检查一下这个小提琴:啊,我明白你现在在说什么了。按照当前Dojo ValidationTextBox的实现方式,上述答案中的方法可能无法实现您想要的解决方案。我认为您可能需要改为在ValidationTextBox约束属性中使用正则表达式来执行此操作。我删除了项。如果两个项同时出现错误,则焦点允许在这两个项上显示感叹号。但是,当我输入项时,消息不会出现或显示。当我输入这些项目时,我如何才能获得要显示的消息?我刚刚编辑了小提琴,新链接位于原始帖子中,以删除if-else语句。我要做的是,首先执行表单验证,然后执行任何后续的附加验证检查,您可以在之后进行定义。我面临的唯一问题是,如果两个字段都有错误,则在我输入字段时不会显示消息。我需要用户能够读取错误。一旦我移除焦点,感叹号就会出现在这两个位置,但是消息不会出现。这是一把小提琴,我不完全确定你要的是什么,但我确实清理了你的代码,所以检查一下这个小提琴:啊,我明白你现在在说什么了。按照当前Dojo ValidationTextBox的实现方式,上述答案中的方法可能无法实现您想要的解决方案。我认为您可能需要做的是在ValidationTextBox约束属性中使用正则表达式来执行此操作。您可以帮助我查看ajax请求吗您可以帮助我查看ajax请求吗