你好,这就是我文件头中的内容:

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中按Enter键时,它不会创建新行但发送它[请参阅我的<input type="button">]

但它不起作用!它不断创新......现在使用IE8。

有帮助吗?

解决方案

使用keyCode而不是。

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

其他提示

嗯,我不确定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;
    }
}

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

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

如果你想使用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。

对于非js相关的方式,我很确定你可以使用type = <!> quot; submit <!> quot;的输入。它将使用enter来提交表单。此时,您只需将事件移至onsubmit。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top