2009-10-26 130 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