gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:08:42 25 4
gpt4 key购买 nike

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

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

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

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

JSP

<body class="claro">
<form id="myform" data-dojo-type="dijit/form/Form">

<input
data-dojo-type="dijit/form/ValidationTextBox"
data-dojo-props="
regExp: '[\\w]+',
required: true,
invalidMessage: 'Invalid First Name !',
missingMessage: 'First Name Required !'"
id="fnameTextBox" title="First Name"
placeholder="Your First Name"
/>

<input
data-dojo-type="dijit/form/ValidationTextBox"
data-dojo-props="
regExp: '[\\w]+',
required: true,
invalidMessage: 'Invalid Last Name !',
missingMessage: 'Last Name Required !'"
id="lnameTextBox" title="Last Name"
placeholder="Your Last Name"
/>

<button id="validateFields" data-dojo-type="dijit/form/Button">Validate</button>
</form>
</body>

Javascript

dojo.require("dijit/form/Form");
dojo.require("dijit/form/Button");
dojo.require("dijit/form/ValidationTextBox");
dojo.require("dijit/Tooltip");

dojo.ready(function() {
var fName = dijit.byId("fnameTextBox");
var lName = dijit.byId("lnameTextBox");

dojo.connect(dijit.byId("validateFields"), "onClick", function() {
var myform = dijit.byId('myform');
myform.connectChildren();


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

}else{
myform.validate();
}

});
});

最佳答案

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

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: '^((?!John).)*$'

以下不是最佳做法。因为调用 form.validate() 仍会将此字段验证为 true,这是不正确的。

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

关于javascript - Dojo/Dijit 设置无效消息和验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com