Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以编程方式设置dojo中的验证器函数_Javascript_Validation_Textbox_Dojo_Gridx - Fatal编程技术网

Javascript 如何以编程方式设置dojo中的验证器函数

Javascript 如何以编程方式设置dojo中的验证器函数,javascript,validation,textbox,dojo,gridx,Javascript,Validation,Textbox,Dojo,Gridx,我需要将isDuplicate()函数设置为ValidationTextBox的验证器函数。这就是我正在做的: parent=this; var structure = [ {"id": "Name", "field": "Name", "name": "Name", width: "40%", widgetsInCell: true, alwaysEditing: true,

我需要将isDuplicate()函数设置为ValidationTextBox的验证器函数。这就是我正在做的:

parent=this;
var structure = [
            {"id": "Name", "field": "Name", "name": "Name", width: "40%",
                widgetsInCell: true,
                 alwaysEditing: true,
                 editor: ValidationTextBox,
                 editorArgs: {
                     props: 'required:true, validator: parent.isDuplicate ,invalidMessage:"Duplicate Name"'                          

                 }

我收到此错误:无法设置单元格值:TypeError:undefined不是函数

您有范围问题。当ValidationTextBox处理props时,父变量不再可见。由于我自己无法确定在props字符串中处理范围的合适方法,我发现最简单的解决方案是包装小部件,将上下文转换为小部件构造函数:

define(['dojo/_base/declare', 'dijit/form/ValidationTextBox'], function (declare, ValidationTextBox) {
  return function (validationContext) {
    return declare('DuplicateEntryValidationTextBox', [ValidationTextBox], {
      validationContext: validationContext,
      validator: function (value, constraints) {
        validationContext.isDuplicate(value, constraints);
      }
    })
  }
});

...

editor = DuplicateEntryValidationTextBox(parent),
或者使用一种生活方式:

editor: (function (validationContext) {
  return declare('DuplicateEntryValidationTextBox', [ValidationTextBox], {
    validationContext: validationContext,
      validator: function (value, constraints) {
      return validationContext.isDuplicate(value);
    }
  });
})(parent),
我知道这可能对你没什么帮助,差不多整整一年之后,但我认为这是值得发布的,因为我遇到了完全相同的问题