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 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振