框架js验证中的onsubmit和jsp中的onsubmit执行顺序的问题

现在使用了一个验证框架,代码如下

initialize : function(form, options){
    this.options = Object.extend(new ValidationDefaultOptions(), options || {});
    this.form = $(form);
    var formId =  ValidationUtils.getElmID($(form));
    Validation.validations[formId] = this;
    if(this.options.onSubmit) Event.observe(this.form,'submit',this.onSubmit.bind(this),false);
    if(this.options.immediate) {
        var useTitles = this.options.useTitles;
        var callback = this.options.onElementValidate;
        Form.getElements(this.form).each(function(input) { 
            Event.observe(input, 'blur', function(ev) { Validation.validateElement(Event.element(ev),{useTitle : useTitles, onElementValidate : callback}); });
        });
    }

这里给jsp的form绑定了一个onsubmit。
因为验证框架只是做一些比如,是否输入的数据满足要求这些的验证,在具体的jsp页面上,在提交时,form的onsubmit="return tosubmit();"还需要做些另外的验证,比如数据是否已经提交。验证是否提交的方法实现是,
var checkded = false;
function tosubmit(){
if(checked){
alert('已经提交了');
return false;
}
....
checked = true;
}

现在遇到的问题是,
实际发现,在jsp上的函数,tosubmit的执行总是在框架绑定的onsubmit前执行。这样就造成了,当因为框架验证没有通过时,checked已经是true了。如果改了输入的数据,再次提交,就会提示说:已经提交了。

查了很多资料,没想到方法。
[b]问题补充:[/b]
你可以把给document.body.onload绑定事件,给这个form设置框架要绑定的onsubmit

---多谢lovewhzlq
不过,没太看明白?

我想的最好是,框架中的代码不进行更改能够达到效果就最好。
[b]问题补充:[/b]

document.getElementsByTagName("form")[0].addEventListener('onsubmit',function(e){
    return test();
},false);

我在onload中加上这个,最终的结果是我的test函数没有运行。
onsubmit换成submit相同的结果。

document.getElementsByTagName("form")[0].onsubmit=function(e){
return test();
};

直接这样就行了,

你可以把给document.body.onload绑定事件,给这个form设置框架要绑定的onsubmit

你理解dom加载完毕事件吗,html,js方面的内容,

就是不把框架的验证事件写死在的onsubmit属性中,而是在dom加载完毕后动态用js赋上

你如果用onsubmit=function(e)的形式的话,将只能添加一个事件响应方法,而addEventListener/attachEvent是可以添加多个响应方法的。不过你的onsubmit是写在HTML里面的,而在js里面用的是Event.Observe来添加新的响应方法,所以应该问题不大。

你需要在初始化框架的时候,把onSubmit方法传进去。

initialize(form, {
onSubmit : function() {

}
})