dev*_*dar 1 javascript validation dojo dijit.form
我有一个表单项,其中包含missingMessage和为该项定义的invalidMessage.我在项目上调用表单验证方法进行验证.如果该项为空,则调用missingMessage并显示红色感叹号错误图标.
我正在尝试在用户输入特定值时在文本项上设置invalidMessage,如何在不对文本项进行硬编码的情况下显示invalidMessage和红色感叹号.
我想用它来对项目进行自定义验证.如果用户输入特定值,我希望验证失败并返回错误.在这里,我试图告诉用户他们不能在名字字段中输入值'John'.我收到了红色感叹号,但是invalidMessage没有显示.
我想当用户点击感叹号时他们可以看到错误消息,当他们开始输入或更改字段的内容时,不再显示感叹号nad错误消息.
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');
| 归档时间: | 
 | 
| 查看次数: | 8698 次 | 
| 最近记录: |