我今天在网上寻找有关文本框验证的信息,但即使在Dojo-Homepage上我也无法获得任何有用的信息。
我的问题:我有一个NumberSpinner,其中只允许以十步(10,20,30,......)为单位的数字。但我不知道如何为此设置验证器。在“约束”声明中,似乎没有可能这样做。而且我不知道如何使用验证器功能,以便在输入错误信息时立即向我显示警告标志。
另一个问题是如何在发送表单之前检查表单的任何部分是否无效。每个输入/选择框中都有一个属性,如“有效”,可以一次性检查它们吗?
哦,一个提示,我以编程方式创建所有小部件。
希望那里的任何人都可以帮助我!!!
祝你好运, 罗宾
答案 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 docs和inline 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