可以将 dojo 验证器函数存储到变量中以便稍后调用它
It is possible to store a dojo validator function into a variable to invoke it later
要自定义 dojo NumberTextBox、dojo ValidationTextBox 的验证器...我需要将默认验证器存储在 js 上下文中的某个位置,以便稍后能够调用它;自定义验证取决于默认验证器的结果。
这种方法可以吗,你能帮我做一下吗?
非常感谢
代码示例:
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
djNumberTextBox1.validator = function() {
var valide = true;
//here I'd like to invoke the default (old) validator (something like next line)
//var valide = djNumberTextBox1.validate();//but this causes a too much recursion because validate() references the current function
//customisation depending on the default (old) validator result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
是的,您可以使用 'single tone object' 或当前对象的 属性 添加任何对 "validation" 有用的信息,并在需要时从NumberTextBox.
你能试试下面的代码吗:
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
// store the validator in _oldValidator
djNumberTextBox1._oldValidator = djNumberTextBox1.validator;
djNumberTextBox1.validator = function() {
var valide = true;
// Run the old validator
valide = djNumberTextBox1._oldValidator();
//customisation depending on the default (old) validator result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
编辑 1:
将参数传递给验证器函数。
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
// store the validator in _oldValidator
djNumberTextBox1._oldValidator = djNumberTextBox1.validator;
djNumberTextBox1.validator = function(value, constraints) {
var valide = true;
// Run the old validator with arguments
valide = djNumberTextBox1._oldValidator(value, constraints);
//customisation depending on the default (old) validator result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
编辑 2:
我认为 NumberTextBox 调用了 validate()。
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
// store the validate in _oldValidate
djNumberTextBox1._oldValidate = djNumberTextBox1.validate;
djNumberTextBox1.validate = function() {
var valide = true;
// Run the old validate
valide = djNumberTextBox1._oldValidate();
//customisation depending on the default (old) validate result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
要自定义 dojo NumberTextBox、dojo ValidationTextBox 的验证器...我需要将默认验证器存储在 js 上下文中的某个位置,以便稍后能够调用它;自定义验证取决于默认验证器的结果。
这种方法可以吗,你能帮我做一下吗?
非常感谢
代码示例:
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
djNumberTextBox1.validator = function() {
var valide = true;
//here I'd like to invoke the default (old) validator (something like next line)
//var valide = djNumberTextBox1.validate();//but this causes a too much recursion because validate() references the current function
//customisation depending on the default (old) validator result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
是的,您可以使用 'single tone object' 或当前对象的 属性 添加任何对 "validation" 有用的信息,并在需要时从NumberTextBox.
你能试试下面的代码吗:
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
// store the validator in _oldValidator
djNumberTextBox1._oldValidator = djNumberTextBox1.validator;
djNumberTextBox1.validator = function() {
var valide = true;
// Run the old validator
valide = djNumberTextBox1._oldValidator();
//customisation depending on the default (old) validator result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
编辑 1:
将参数传递给验证器函数。
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
// store the validator in _oldValidator
djNumberTextBox1._oldValidator = djNumberTextBox1.validator;
djNumberTextBox1.validator = function(value, constraints) {
var valide = true;
// Run the old validator with arguments
valide = djNumberTextBox1._oldValidator(value, constraints);
//customisation depending on the default (old) validator result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};
编辑 2:
我认为 NumberTextBox 调用了 validate()。
var djNumberTextBox1 = dijit.byId('#{id:djNumberTextBox1}');
// store the validate in _oldValidate
djNumberTextBox1._oldValidate = djNumberTextBox1.validate;
djNumberTextBox1.validate = function() {
var valide = true;
// Run the old validate
valide = djNumberTextBox1._oldValidate();
//customisation depending on the default (old) validate result
var djButton1 = dijit.byId('#{id:djButton1}');
if(!valide){
djButton1.setDisabled(true);
}else{
djButton1.setDisabled(false);
}
return valide;};