Dojo 以编程方式验证 TextBox

Posted

技术标签:

【中文标题】Dojo 以编程方式验证 TextBox【英文标题】:Dojo Programmatically validate TextBox 【发布时间】:2013-06-03 14:52:22 【问题描述】:

我正在尝试以编程方式创建一个 dojo 表单并在单击按钮时验证输入 TextBox。但是当我尝试验证时,我得到一个错误“dijit.byId(..) is undefined. 下面是代码:

var form = new dijit.form.Form( 
                                    nametb: new dijit.form.TextBox(
                                        name: "name",
                                        type: "text",
                                        required: true,
                                        placeHolder: "Your Full Name"
                                    ,"nametb"),
                                    subBtn: new dijit.form.Button(
                                        label: "Proceed",
                                        onClick: function()
                                            if(dijit.byId("nametb").get('value') == null || dijit.byId("nametb").get('value').length == 0 )
                                                
                                                    alert("Please enter Name");
                                                    return false;
                                                

                                        
                                    ),
                                    cnclBtn: new dijit.form.Button(
                                        label: "Cancel",
                                        onClick: function()
                                            dia.hide();
                                        
                                    ),
                                    postCreate: function()
                                        this.domNode.appendChild(this.nametb.domNode);
                                        this.domNode.appendChild(this.subBtn.domNode);
                                        this.domNode.appendChild(this.cnclBtn.domNode);
                                    
                                );

但是现在当我单击“继续”按钮时,我收到错误 dijit.byId(...) is undefined

如何验证此文本框?

【问题讨论】:

【参考方案1】:

您从未为nametb 设置ID,因此dijit.byId() 无法找到文本框并引发错误。试试

nametb: new dijit.form.TextBox(
    name: "name",
    type: "text",
    id: "nametb",

【讨论】:

我按照你说的做了,但它仍然允许提交表单。经过长时间的努力,我还添加了 dijit.byId("nametb").get('value').length == 0 以使其正常工作。查看问题的变化。 @zulq 你还有什么问题吗? @zulq 您仍然没有在 OP 中将 id 分配给 nametb 我只是没有显示完整的复制粘贴代码。我只是在这里编辑了一个,但我的代码有一个 id。它现在工作正常,但也只有长度检查,谢谢。【参考方案2】:

在指定的小部件上试试这个:

// validate nametb textbox
dijit.byId("nametb").validate();

或者您可以像这样验证表单:

if (dijit.byId("yourForm").validate())  
   // do something if your form is valid
 else 
   // show error message

【讨论】:

以上是关于Dojo 以编程方式验证 TextBox的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建 dojo 数据网格“抱歉发生错误”

以编程方式填充组合框 dojo (1.8) 的最佳方法是啥?

dojo 增强网格过滤器 - 以编程方式设置列 A 大于某个数字

以编程方式使 dojo 数据网格单元跨越多列

以编程方式(但不是以声明方式)实例化小部件时出现 Dojo 重复 ID 错误

以编程方式更改值时触发 Dojo Select onChange 事件