dijit文本框的自定义验证

时间:2009-08-04 09:48:19

标签: validation textbox dojo

我今天在网上寻找有关文本框验证的信息,但即使在Dojo-Homepage上我也无法获得任何有用的信息。

我的问题:我有一个NumberSpinner,其中只允许以十步(10,20,30,......)为单位的数字。但我不知道如何为此设置验证器。在“约束”声明中,似乎没有可能这样做。而且我不知道如何使用验证器功能,以便在输入错误信息时立即向我显示警告标志。

另一个问题是如何在发送表单之前检查表单的任何部分是否无效。每个输入/选择框中都有一个属性,如“有效”,可以一次性检查它们吗?

哦,一个提示,我以编程方式创建所有小部件。

希望那里的任何人都可以帮助我!!!

祝你好运, 罗宾

3 个答案:

答案 0 :(得分:3)

您可以覆盖NumberSpinner的isValid()方法。例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
  <title>class</title>
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dijit/themes/soria/soria.css" />
  <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js"></script>
  <script type="text/javascript">
    dojo.config.parseOnLoad = true;
    dojo.addOnLoad(function() {
      dojo.require('dijit.form.NumberSpinner');
      dojo.require('dojo.parser');
      dojo.addOnLoad(function() {
        new dijit.form.NumberSpinner({
          isValid: function(isFocused) {
            var value = parseFloat(this.attr('value'));
            if (isNaN(value) || (value % 10 != 0)) {
              return false;
            } else {
              return true;
            }
          }
        }, 'here');

      });

    });
  </script>
</head>

<body class="soria">
  <div id="here"></div>
</body>

</html>

答案 1 :(得分:0)

dijit.form.NumberSpinner派生自dijit.form.ValidationTextBox,因此它会接受相同的参数(请参阅dijit.form.ValidationTextBox docsinline docs in its source code)。只需编写一个可以验证输入的正则表达式(作为字符串)。这样的事情可以解决问题:

var box = new dijit.form.NumberSpinner({
  regExpGen: function(){ return "\\d+0"; }
}, "my_node");

答案 2 :(得分:0)

您还可以使用delta / smallDelta属性。请参阅example at Dojo Campus