1

我想执行一些客户端表单验证,我正在考虑使用 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>
4

2 回答 2

0

好吧,dojo 仅将错误消息显示为工具提示,而不是像实时验证这样的文本消息,我认为这是您正在寻找的

http://livevalidation.com/examples

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

于 2011-07-08T19:46:51.797 回答
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
于 2013-08-24T09:47:40.133 回答