<form name="form1" method="post" action="a.jsp" onSubmit="checktalk()">
把 onSubmit="checktalk()" 去掉
-> <form name="form1" method="post" action="a.jsp">

解决方案 »

  1.   

    event.ctrlKey&&event.keyCode==13&&checktalk()
    里的checktalk()在作怪
      

  2.   

    to:telenths(_非法操作_) 
    如果去掉onSubmit="checktalk()" 
    当点击提交按钮时,怎么才能检验发言是否为空呢?
    to:Hodex(小何才露尖尖角) 
    如果在postart()中不判断checktalk()的话,按ctrl+enter提交时,因为submit()函数是不会触发onSubmit="checktalk()" 的,所以也不能检验发言是否为空!
    二位大侠感觉怎么样,够头疼吧!
      

  3.   

    你的代码中肯定会执行两次checktalk()
    1。onKeyDown
    2。onSubmit<form name="form1" method="post" action="a.jsp">
    <input name="textfield2" type="text" size="60" onKeyDown="postart()"><input type="button" value='递交' onclick="postart()">
      

  4.   

    <script language="JavaScript">
     function postart()
     {
       if(event.ctrlKey&&event.keyCode==13)
       {
       }
     }
     function checktalk()
     {
       if(document.form1.textfield2.value.length==0)
       {
         alert("发言不可以为空!");
         return false;
       }
       else     document.form1.submit();
     }
    </script>
      

  5.   

    正确如下:
    <script language="JavaScript">
     function postart()
     {
       if(event.ctrlKey&&event.keyCode==13)
       {
       if(document.form1.textfield2.value.length==0)
       {
         alert("发言不可以为空!");
         return false;
       }
       else
       {
         document.form1.submit();
       }
       }
     }
    </script>
      

  6.   

    谢谢soloxiao(红色孤独),你的方法可以解决问题。
    但是document.form1.submit()到底会不会触发onSubmit="checktalk()"呢?
    如果会,那么我将postart()改为:
    function postart()
     {
       if(event.ctrlKey&&event.keyCode==13)
       {
         document.form1.submit();
       }
     }
    就应该触发onSubmit="checktalk()"进行检验,但事实上不会进行检验!
    如果不会,那么我按ctrl+enter提交时,虽然postart()里执行了checktalk(),但是onSubmit="checktalk()"应该不会执行,所以也不会执行两次checktalk(),可是事实上的确执行了两次!
    你们说是咋回事哩!
      

  7.   

    另设一个checktalk1()方法啊,里面不要alert就行了
      

  8.   

    1:document.form1.submit()到底会不会触发onSubmit="checktalk()"呢?
    答:不会
    e.g :
    <form name="form1" action ="a.asp" onsubmit="alert ('onsubmit is running')">
     <input type=button onclick="document.form1.submit()"><!--此处不会触发-->
     <input type="text" name="textfield2"><!--有焦点时 打回车提交该form并触发onsubmit-->
     <input type=submit>  <!--此处会触发-->
    </form>
    2:为什么会执行两次?
    答: 因为当你把焦点放在textfield2这个文本框时,按下enter键 就会提交该form.
    所以你按下ctrl加enter的时候 做了两件事情:一个是提交了form,触发onsubmit(),另一个就是执行了postart()中的checktalk().所以如果textfield2为空,就会弹出两次对话框.
      

  9.   

    <script language="JavaScript">
     function postart()
     {
       if(event.ctrlKey && event.keyCode==13)
       {
         checktalk();
       }
     }
     function checktalk()
     {
       if(document.form1.textfield2.value.length==0)
       {
         alert("发言不可以为空!");
       }
       else{
          document.form2.submit();
       }
     }
    </script>
    <form name="form1"  onSubmit="return false;">
       <input type=button value="提交" onclick="checktalk();" >
       <input name="textfield2" type="text" size="60" onKeyDown="postart()">
    </form>
    <form name="form2" method="post" action="提交页面.jsp">
    </form>
      

  10.   

    谢谢lfhh() 
    解释的非常到位!
    给分没商量!