还有,如果Form的定义如下:
<form name=form1 onSubmit="return fun(this)">
即在提交时调用fun(form)函数,如果返回为true则提交,如果返回为false则不提交。那如上的代码应该怎么写?

解决方案 »

  1.   

    <form name=form1 onSubmit="return fun(this)">
    <input type=submit>
    </form>
    <script>
    function fun(obj){
    var a = 1;
    if(a==1){
      return true
    }
    else{
      return false;
    }
    }
    </script>
      

  2.   

    第一个你写的什么,好乱<body>
    <script language=javascript>
    function document.onkeydown(eventobject){
            ie = (document.all)? true:false
            if (ie){
                 if(event.ctrlKey && window.event.keyCode==13){
                    document.form1.submit();
                 }
            }
    }
    </script>
    <form name="form1" action="test.asp">
    <input type=submit><input>
    </form>
    </body>
      

  3.   

    bencalie(Bencalie)的第一贴可能没理解我的意思
    我是说如果form是这样定义的,那快捷键调用form的submit时有什么区别我的第一贴不完整的,只是javascript的代码,本来还有
    ...
    <textarea ... onkeydown=ctlent()></textarea>
    ...
    明白我的意思了吧这段代码一般是能用的,我是问什么情况下无法触发?
    谢谢
      

  4.   

    看不懂你的函数定义为什么放在一个if语句里看你的代码,只要在TEXTAREA里面按Ctrl+Enter就会触发提交事件
      

  5.   

    if(event.ctrlKey && window.event.keyCode==13)这句不就是判断按键的吗?只要是按Ctrl+Enter就会执行,当然按的不是这个组合键,括号里的就不执行了
      

  6.   

    函数定义为什么放在一个if语句里
    放在 if语句里面本身就是错误的
    你的代码有问题当然触发不了了
    一般都可以触发的
    submit默认就是 如果返回为true则提交,如果返回为false则不提交。
      

  7.   

    并且如果form如上定义的话,用上面的脚本,就无法实现adda()函数想达到的效果,即不管是否返回true或是false,form都会提交那应该怎么写脚本呢?
      

  8.   

    你们可以试一下如下的代码
    <html>
    <head>
    <script language=javascript>
    function adda(theform){
    alert("OK!");
    return true;   ////改成false再试试
    }
    </script>
    </head>
    <body>
    <form name=form1 onSubmit="return adda(this)">
    <textarea name=content cols=100 rows=7 title="可以使用Ctrl+Enter回复" onkeydown=ctlent()></textarea>
    <input type=submit value="发布" name=submit)>
    </form>
    <script language=javascript>
    ie = (document.all)? true:false
    if (ie){
        function ctlent(eventobject){
                 if(event.ctrlKey && window.event.keyCode==13){
                    this.document.form1.submit();
                 }
        }
    }
    </script>
    </body>
    </html>你会发现按“发布”会弹出对话框,而按“Ctrl+Enter”不会(因为根本没有调用adda())。但两者都会提交。
    如果函数adda()返回false,则按“发布”弹对话框,但不提交;而组合键和之前状况一样。难道非要写成 if(adda(form1)) this.document.form1.submit();这样吗?
      

  9.   

    1、onkeydown=ctlent()是写在TEXTAREA里面的啊,需要这个TEXTAREA获得焦点的时候按Ctrl+Enter2、表单名.submit()不会触发onsubmit事件,修改如下:
    this.document.form1.submit();
    ->
    this.document.form1.onsubmit();完整代码:
    <html>
    <head>
    <script language=javascript>
    function adda(theform){
    alert("OK!");
    return true;   ////改成false再试试
    }
    </script>
    </head>
    <body>
    <form name=form1 onSubmit="return adda(this)">
    <textarea name=content cols=100 rows=7 title="可以使用Ctrl+Enter回复" onkeydown=ctlent()></textarea>
    <input type=submit value="发布" name=submit)>
    </form>
    <script language=javascript>
    ie = (document.all)? true:false
    if (ie){
        function ctlent(eventobject){
                 if(event.ctrlKey && window.event.keyCode==13){
                    this.document.form1.onsubmit();
                 }
        }
    }
    </script>
    </body>
    </html>
      

  10.   

    还是有问题
    改成onsubmit()之后,adda()函数是触发了,但是不管返回true或者false,都不会提交
    我试了
      

  11.   

    这么改吧<html>
    <head>
    <script language=javascript>
    function adda(theform){
    alert("OK!");
    return true;   ////改成false再试试
    }
    </script>
    </head>
    <body>
    <form name=form1 onSubmit="return adda(this)">
    <textarea name=content cols=100 rows=7 title="可以使用Ctrl+Enter回复" onkeydown=ctlent()></textarea>
    <input type=submit value="发布" name=submit)>
    </form>
    <script language=javascript>
    ie = (document.all)? true:false
    if (ie){
        function ctlent(eventobject){
                 if(event.ctrlKey && window.event.keyCode==13 && adda()){
                    this.document.form1.submit();
                 }
        }
    }
    </script>
    </body>
    </html>
      

  12.   

    我觉得上面的改法和if(adda(form1)) this.document.form1.submit()差不多,都不太通用,要根据onSubmit情况的变化而改写代码这个问题我已经解决了
    我后来采用的是
    this.document.form1.submit.click();
    不是有个<input type=submit value="发布" name=submit>吗?我想一般不会没这个吧!:)
    这样就没问题了还是非常感谢bencalie(Bencalie)的指点:)
      

  13.   

    之前不能触发也是这个问题!
    当form的onsubmit定义为onsubmit="return foo()"时,或者根本没有onsubmit时
    如果this.document.form1.submit() 就会出现错误:对象不支持此属性或方法。如我第一帖所说的那样,而采用this.document.form1.submit.click() 的方式(当然前提是有这个input),则没有这些问题。希望我遇到的问题,对大家有帮助!