未捕获的TypeError:无法使用dijit.form.DateTextBox调用null的方法'getMonth'

时间:2012-04-26 18:59:04

标签: dojo dijit.form

我有一个网格和一个编辑器,用于编辑每个行值。在我的编辑器中,我有一个这个dijit.form.DateTextBox。我也有提交和取消按钮。 在编辑按钮单击,我打开网格弹出编辑器,其中包含1个表单和一堆其他dojo控件,包括文本框。现在我想使用取消按钮重置表单并隐藏Dojo网格弹出对话框。我为此创建了一个函数。当我删除在DateTextBox onChange事件之后运行的JavaScript时,它工作正常。 它给了我以下错误。

未捕获的TypeError:无法调用null

的方法'getMonth'

我在DateTextBox onChange事件上的JavaScript就是这个。

dojo.connect(dijit.byId("Edit_TrialStartDate"), "onChange", function () {                        
                        var item = dojo.date.locale.format(dijit.byId("Edit_TrialStartDate").value, { datePattern: "MM/dd/yyyy", selector: "date" });
                        dijit.byId("Edit_tTrialStartDate").setValue(item);
                    });

因为如果出现此错误,我的网格弹出对话框永远不会释放它注册的ID。所以我一次只能编辑1条记录。当我点击另一行编辑按钮时,我得到以下错误。

未捕获错误:尝试使用id == TrialGridPopUp注册小部件,但该ID已经注册

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在代码中的某处,您将一个不是日期的对象传递给期望日期的方法。

Uncaught TypeError: Cannot call method 'getMonth' of null

我会验证dijit.byId("Edit_TrialStartDate").value是否为您提供日期对象。

调用dijit.byId("Edit_TrialStartDate").get('value');

也是更好的做法