使用Dojo进行自定义表单验证

时间:2009-12-14 08:39:47

标签: validation dojo dijit.form

我想执行一些客户端表单验证,我正在考虑使用Dojo来完成它。

我希望用户能够在文本框中插入他想要的内容,但是当他点击提交时,要验证的表单。如果字段无效,我想在文本框周围显示一个红色边框,在右边显示一条消息,也是红色。

如果用户在错误(onfocus)中单击文本框,则错误消息将消失。如果他单击错误消息,文本框将获得焦点,并且错误消息将消失。他再一次可以插入任何他想要的东西,直到验证。

据我了解,Dojo有一些默认行为,工具提示和文本框如果无效则变为黄色(参见下面的示例)。

是否可以使用Dojo执行我想要的操作,或者我应该将自己的实现用于验证(我的意思是更容易:编写一些我理解并可以控制或使用某些未知工具包进行操作的内容)?

如果有可能,我该怎么办?或者在哪里可以找到相关信息?

谢谢!

<html>
  <head>
    <link rel="stylesheet" type="text/css" href="dijit/themes/tundra/tundra.css">
      <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad: true"></script>
      <script type="text/javascript">
        dojo.require("dijit.form.Form");
        dojo.require("dijit.form.Button");
        dojo.require("dijit.form.ValidationTextBox");
        dojo.require("dijit.form.DateTextBox");
      </script>
  </head>
  <body class="tundra">
    <table style="border: 1px solid black;">
      <tr>
        <td>Name:</td>
        <td>
          <input type="text" id="name" name="name" required="true" dojoType="dijit.form.ValidationTextBox" />
        </td>
      </tr>
      <tr>
        <td>Date of birth:</td>
        <td>
           <input type="text" id="dob" name="dob" dojoType="dijit.form.DateTextBox" />
        </td>
      </tr>
     </table>
     <input type="button" name="submitButton" value="Submit" />
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

好dojo只显示错误消息作为工具提示而不是像实时验证这样的短信,我认为你在寻找

http://livevalidation.com/examples

但是使用dojo你不能将消息作为文本获取,但只能作为工具提示红色边框你可以使用验证文本框,如果你想在表单上提交使用dojo表单而不是html .Dojo表单有一个名为validate的函数,实际上是自动的在内部调用所有dijit小部件并检查它们中的任何一个是否无效并分别返回true和false。您可以使用此函数控制表单的提交

答案 1 :(得分:0)

让我们考虑一下,我们有一个dijit表格: -

<form id="formId" data-dojo-type="dijit.form.Form">
...<!--all form widgets are here-->
</form>

当用户提交表单时,您需要验证如下: -

registry.byId("formId").validate(); //returns boolean value

将返回一个布尔值 - 如果所有字段都有效,则为true;如果任何一个字段无效,则返回false。因此,如果返回true,则可以继续逻辑,否则可以显示一些自定义错误消息。

如果动态添加任何dijit表单小部件到这个表单,那么首先,我们需要连接它们。

var form = registry.byId("formId");
form.connectChildren(); //connects all child widgets of this form
form..validate(); // returns boolean value