submit按钮事件onclick在用户用鼠标左键单击对象时触发。
onmousedown 当用户用任何鼠标按钮单击对象时触发。 
onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 form表单事件
onsubmit 当表单将要被提交时触发。 你在这个事件中处理就行了

解决方案 »

  1.   

    <script language="JavaScript">
    <!--
    function test(){
    form1.submit();
    document.getElementById("fdsa").innerHTML = "fdasfdas";
    alert("b");
    }
    //-->
    </script>
    <form name="form1" method="post" action="saveguest.asp">
    <textarea name="user_text" cols="32" rows="8" id="ok" ></textarea>
    </form><A HREF="#" id="fdsa" ONCLICK="test()">?好</A>
      

  2.   

    to 梅花雪:你的这两个事件应该是在做完提交之后需要重新定位的时候才触发的事件,但是我就希望可以在onsubmit 和 做提交之前有个空间可以让我处理问题。谢谢!to 笨笨:onsubmit我知道,其实我就是想在这个事件之后处理些东西。
      

  3.   

    try:<form name="form1" onsubmit="return aa()" onaftersubmit="return false">
    <input type="submit">
    </form>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function aa() {
    alert(0);
    return true;
    }var f = document.forms["form1"];
    var s = f.onsubmit;
    var as = f.onaftersubmit;f.onsubmit = function(){
    var r = s();
    if (r && typeof as == "function") return as();
    if (r && typeof as == "string") return (new Function(as))();
    return r;
    };
    //-->
    </SCRIPT>
      

  4.   

    <script language=javascript>
    function test()
    {
    alert("haha")
    return true
    }
    function yaofunction()
    {
    alert("yours")
    return true
    }
    </script>
    <form name=form1 onsubmit="if(test()){return yaofunction()}">
    <input type=submit>
    </form>
      

  5.   

    有一段代码是这样的:function newsubmit(event) {
        var target = event ? event.target : this;    // 您可以在这里定义想要的操作    alert('Submitting form to ' + target.action);    // 提交表单
        this._submit();
    }// 捕获所有表单的提交操作
    window.addEventListener('submit', newsubmit, true);// 如果一个脚本调用了 someForm.submit(), 它并不会触发事件 onsubmit,
    // 因此我们需要重新定义 HTMLFormElement 类的 submit 方法。
    HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
    HTMLFormElement.prototype.submit = newsubmit;它捕捉所有的form的submit事件,然后在之前做处理,我也就想要这个效果,但是在IE中这段代码是会出问题的。。大家有没有好的想法?谢谢。。
      

  6.   

    in IE, you can define a HTC
      

  7.   

    addEventListener无效,而且HTMLFormElement也是未定义。。
      

  8.   

    addEventListener, HTMLFormElement在IE是不支持的
      

  9.   

    你的意思是想使用统一的提交接口函数来处理提交吗?
    那么你可以通过捕获onclick事件来处理的
    点击提交按钮时,onclick事件先于onsubmit事件发生,并可以阻止onsubmit事件发生
    于是你可以通过判断是否点击了提交按钮来控制事态的发展测试例
    <script>
    document.onclick = foo;function foo() {
      var el = event.srcElement;
      alert(el.tagName+":"+el.type);
      if(el.type == 'submit') {
        alert(el.form.name);
        return false;
      }
      if(el.tagName == 'FORM') {
        return false;
      }
    }
    </script><form name=f1 onsubmit='return foo()'>
    <input type=text name=t value='a'>
    <input type=submit>
    </form>
    <form name=f2>
    <input type=text name=t value='a'>
    <input type=submit>
    </form>
      

  10.   

    其实如果我现在想要在onsubmit() 和 form.submit()之间处理些代码,我该怎么处理?也就是我想要自己控制form.submit(),但是我不想用onsubmit()事件,而用onclick事件处理的话又太早了各位高手
      

  11.   

    还有办法D,我早期研究过,就是先将action指向一个javascript函数,再改成原来的action
      

  12.   

    谢谢各位,特别感谢咖啡人生提出的方法。。其实我想做一个通用的javascript 程序处理提交的方法,我希望按了一次按钮之后就不允许再多次按了。而且任何按钮都不再允许按了。
    我的想法是,用一个全局的javascript变量(初始化=0)来判断是否按下了按钮,捕捉所有按钮的鼠标点击事件/enter事件,如果变量=1就弹出警告,并不让事件继续。通常我们有2种方法处理提交:
    1,用普通按钮,在button.onclick事件中处理好一些事情后调用form.submit()提交。
    2,用submit按钮,在form.onsubmit事件中处理一些事情。然后系统会提交。
    正常来说,在这里(onclick/onsubmit)如果我们在处理成功的话会return true, 否则会return false.在IE中:
    第一种情况事件的触发顺序:button.onclick-->form.submit()
    第二种情况事件的触发顺序:form.onsubmit()-->直接提交,注意,并不会显示调用form.submit()那么问题在,在我们并不知道是否有处理onclick/onsubmit事件的情况下,我应该在哪里来使这个变量=1?如果是第一种情况,我们应该在调用form.submit()的时候处理,我们需要捕捉到form.submit()事件,先标志变量=1,然后才处理原来的submit().这样的话,如果再次调用按钮的点击/enter事件,我就可以警告用户,因为系统已经提交了一次,这里并不需要理会onclick事件是否成功处理。
    如果是第二种情况,它并不会显现的运行form.submit()事件,所以我们必须在form.onsubmit()事件后加上标志变量=1才行,有一个特殊的地方是:如果有onsubmit事件,同时如果用户输入有误,那么调用onsubmit()事件会return false,这种情况我们是允许用户在正确输入后多次提交的,我们必须处理这个意外。问题就在捕捉所有form.submit()和所有form.onsubmit()事件,然后在原来事件后加上自己的处理。附代码(仅供参考,大家觉得有问题的地方烦请提出来,有待改进!):
      

  13.   

    因为我所有的程序都有调用同一个js文件,所以加上通用的处理非常必要,并不需要修改任何程序。修改js文件就可以了。。// click flag.
    var button_click_flag=0;
    var oldSubmit,oldOnSubmit;//********************************************************************************
    // add all buttons' on mouse down event to control button only be clicked one time
    //********************************************************************************
    function control_buttons_to_click_one_time()
    {
    for(var i=0; i < document.forms.length; i++) 
    {

    var objForm = document.forms[i];
    // objForm.submit = foo;
        if ( objForm.submit != null ) 
    {

    oldSubmit = objForm.submit;
    objForm.submit = function ( e ) {
    button_click_flag=1;
    oldSubmit( e );
    };// alert(objForm.submit);
    }
        if ( objForm.onsubmit != null ) 
    {
    oldOnSubmit = objForm.onsubmit;
    objForm.onsubmit = function ( e ) {

    // window.setTimeout('test1()', 10000);
    if (oldOnSubmit( e )==false)
    {
    alert("onsubmit false");
    return false;
    }
    else
    {
    button_click_flag=1;
    alert("onsubmit true");
    return true;
    }

    };// alert(objForm.onsubmit);
    }
    else
    {
    objForm.onsubmit = function ( e ) {
    button_click_flag=1;
    alert("no submit, added.");
    return true;
    }; } // Run through elements and disable buttons
    for(var j = 0; j < objForm.length; j++) 
    {
    var objElement = objForm.elements[j];
    var strElementType = objElement.type.toLowerCase();
    if(strElementType == "submit" || strElementType == "button")
    {
    objElement.onmousedown=function()
    {
    return dis();
    }
    objElement.onkeypress=function()
    {
    return dis();
    } }
    }
    }
    }// while button clicked, alert warning.
    function dis()
    {
    // alert("dis");
    if (button_click_flag==0)
    {return true;}
    else{
    alert(' System is processing \r\n Please do not SUBMIT/CLICK BUTTON time after time.');
    return false;}
    }// on page onload, add button's control
    function addOnloadEvent(fnc){
      if ( typeof window.addEventListener != "undefined" )
        window.addEventListener( "onload", fnc, false );
      else if ( typeof window.attachEvent != "undefined" ) {
        window.attachEvent( "onload", fnc );
      }
      else {
        if ( window.onload != null ) {
          var oldOnload = window.onload;
          window.onload = function ( e ) {
            oldOnload( e );
            window[fnc]();
          };
        }
        else 
          window.onload = fnc;
      }
    }// on window load, add event to all buttons, and re-control all form.submit() 
    // and form.onsubmit().
    addOnloadEvent(control_buttons_to_click_one_time);