单击按钮时的Dojo表单验证

时间:2014-01-02 09:20:20

标签: javascript html validation dojo

我正在使用dojo 1.5。我想在按钮单击时对文本字段进行dojo自定义验证(它不是提交按钮)。 我正在使用“dijit.form.ValidationTextBox”。

如果我们将按钮类型更改为提交,则dojo验证正在运行。但如果我们将其更改为按钮则不会。

您可以在此处找到测试代码:sample code

请告诉我如何在点击按钮上验证文本按钮。

以下是我的代码:

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


function validateForm()
{   
    // Here I want to validate text box. 

}



<table style="border: 1px solid #9f9f9f;" cellspacing="10">
    <tr>
        <td>
            <label for="name">Name:</label>
        </td>
        <td>
            <input type="text" id="name" name="name" required="true" data-dojo-type="dijit/form/ValidationTextBox"   />
        </td>
    </tr>
    <tr>
        <td>
            <label for="dob">Date of birth:</label>
        </td>
        <td>
            <input type="text" id="dob" name="dob" data-dojo-type="dijit/form/DateTextBox"/>
        </td>
    </tr>
</table>

<button data-dojo-type="dijit/form/Button" type="button" onClick="return validateForm()">Validate Form</button>

3 个答案:

答案 0 :(得分:1)

你为什么不经历这个Documentation

答案 1 :(得分:1)

你提供的小提琴有几个问题,但首先是一些背景:

在Dojo 1.5及更早版本中,模块(dijits / widgets等)的命名和加载方式与1.6及更高版本略有不同。所以在Dojo&lt; = 1.5中,你会看到类似的东西:

<button dojoType="dijit.form.Button" ... />
...
dojo.require("dijit.form.Button");
dojo.addOnLoad(function() { ... });

在Dojo 1.6及更高版本中,模块被重写为称为AMD格式(异步模块加载器)的东西。 HTML标记中的“dojo属性”也有所改变,以符合标准。因此,除了上述内容之外,您还会看到以下内容:

<button data-dojo-type="dijit/form/Button" ... />
...
require(["dijit/form/Button", "dojo/domReady!"], function(Button) { ... });

(但是,您仍然可以在1.6中使用旧格式,但它或多或少被视为已弃用。)

现在,在你的小提琴中,你混合了两种方法。因此,您使用dojo.require("some.thing"),还使用data-dojo-type="some/thing"属性。这会导致一些问题。

但是,这不是你的问题:)你想知道如何在按钮点击时运行验证器。在您的代码中,它只是获取表单并运行其validate()方法,如下所示:

window.validateForm = function validateForm()
{   
    var form = dijit.byId("myForm");
    if(form.validate()) {
        console.info("It was valid!");
    } else {
        console.warn("It was not valid!");
    }   
}

(表单还有isValid()方法,用于检查有效性,但不会触发视觉提示/警告。)

我希望能够解决问题!以下是修补程序的小提琴:http://jsfiddle.net/CQ93P/4/

答案 2 :(得分:0)

如果要在单击按钮上验证表单而不是“提交”按钮,请参阅以下代码段。

window.validateForm = function validateMyForm()
{
   var myForm = dijit.byId("myForm");
   if(myForm.validate())
     console.log("The form validation success..");
   else
     console.log("The form validation failed..");
}