2009-10-26 58 views
1

你好这是我在我的文件头:的Javascript:输入提交

function entsub(event) 
     { 
       if (event && event.which == 13) 
       write1(); 
       else 
      return true; 

     } 

,并在身体,我的形式是:

<form id="writeform" name="writeform"> 
    Message: <br /> 
    <textarea name="message" rows="3" id="message" style="width:90%;" onkeypress="return entsub(event)"></textarea> 

    <br /> 
    <input name="send" type="button" id="send" value="Send" onclick="write1()" /> 
    <span id="sent"></span> 
    &nbsp;&nbsp;&nbsp; <input type="reset" value="Reset" /> 
    </form> 

我需要使其工作当我按下输入时,我在textarea,它不会做一个新的行,但发送它[见我<input type="button">]

但它不会工作!它不断制作一个新的线......现在使用IE8。

回答

1

使用键代码,而不是它。

根据浏览器的不同,您需要防止默认操作。查看IE的event.cancelBubble和event.returnValue,以及Firefox的event.stopPropagation()和event.preventDefault()。

+0

这是我接受的答案,我仍然不需要那些其他的东西,只是keyCode。 – 2009-10-26 19:18:11

2

嗯,我不知道该怎么做write1(),但它会是谨慎的,当条件满足时返回false ..

function entsub(event) 
{ 
    if (event && event.keyCode == 13) { 
     write1(); 
     return false; //Return false to prevent default execution 
         //Some browsers use event.preventDefault() etc. 
    }else{ 
     return true; 
    } 
} 
2

通常情况下,跨浏览器的测试如下:

function entsub(e) { 
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { 
     write1(); 
    } 
    return true; 
} 
2

如果你想使用jQuery的,你可以这样做:

 $(document).ready(function() { 

      $("#txtTest").keypress(function(e) { 
       var code = (e.keyCode ? e.keyCode : e.which); 

       if (code == 13) { 
        doSomething(); 
        return false; 
       } 
      }); 

     }); 

     function doSomething() { 
      alert("I did it!"); 
     } 

其中txtTest是你的textarea的ID。

0

对于非js相关的方式,我敢肯定你可以使用type =“submit”的输入,它将使用enter来提交表单。此时,您只需将您的活动移至提交。

0

更简洁的方法是更改​​为<input type="button"><input type="submit">并将onclick="..."移至表格上的onsubmit="..."。这不需要太多容易出错的JavaScript,并且可以在更多情况下使用。

+0

问题是,如果我会这样做,它不会发送它。不知道为什么,从一些人那里得到了这段代码。 – 2009-10-26 19:17:02