luocolor 2009-08-23 21:53
浏览 331
已采纳

框架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相同的结果。

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2009-08-24 08:15
    关注

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

    直接这样就行了,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制