'dijit.form.Form'为null或不是IE中的对象,正则表达式不起作用

时间:2010-12-09 20:05:38

标签: javascript regex dojo

我在IE中遇到错误,而且无论在任何浏览器中,dojo.form.ValidationTextBox的正则表达式部分都会失败。我在这做错了什么?我正在通过Google API加载库。下面是我的代码,如果你可以帮助那将是非常棒的。我想知道这是否是图书馆本身的错误。

if (typeof(djConfig)=='undefined') {
    djConfig = {
        isDebug: false,
        parseOnLoad: true
    };
}

if (document.location.protocol=='https:') {
    djConfig.modulePaths={
        "dojo":"https://ajax.googleapis.com/ajax/libs/dojo/1.5.0/dojo",
        "dijit":"https://ajax.googleapis.com/ajax/libs/dojo/1.5.0/dijit",
        "dojox":"https://ajax.googleapis.com/ajax/libs/dojo/1.5.0/dojox"
    };
}

google.setOnLoadCallback(function() {
    dojo.require("dijit.form.Form");
    dojo.require("dijit.form.ValidationTextBox");
    dojo.require("dojox.validate.regexp");

    dojo.addOnLoad(function() {
        var newsletterForm = new dijit.form.Form({
            action: '/newsletter.cfm',
            method: 'post',
            target: '_blank'
        }, dojo.byId('newsletter-form'));

        var newsletterEmail = new dijit.form.ValidationTextBox({
            invalidMessage: 'Please double-check your email address',
            promptMessage: 'Enter your email address', 
            regExp: '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$',
            required: true,
            tooltipPosition: 'below'
        }, dojo.byId('newsletter-email'));
    });
});

google.load('dojo', '1.5');

1 个答案:

答案 0 :(得分:0)

这是答案的人。显然,Dojo开发人员对Internet Explorer的使用并不太热衷。你必须添加setTimeout并在那里创建一个init函数,至少这就是我所做的。