2

看了看,发现了一些东西,但似乎没有什么像我想要的那样工作。

最初,我的解决方案与 Internet Explorer 和 chrome 一起使用,但不是 firefox(这对我来说不满意)

我正在寻找的是一个简单的文本区域,它在输入键上发送数据,但在 Shift+Enter 上创建一个新行。以下是我所拥有的

function goReturn(e,str) {

  var e = (window.Event) ? e.which : e.keyCode;
  if (e.shiftKey && e=="13") {
    document.getElementById("wall").value = 
        document.getElementById("wall").value+"\n";
  } else if(e=="13"){
    // ...continue to send data
  }
}

这会在输入时发送数据,但也会在移位和输入时发送数据(这是我遇到的问题)。

感谢您的帮助

4

3 回答 3

1

在您的表单中捕获提交调用 (onsubmit="...")。在那里,检查最后一个enter是否与shift. 如果是,则向提交请求返回 false。

false如果返回就e.shiftKey && e=="13"足够了,您也可以尝试。

于 2011-01-05T13:30:11.790 回答
1

您应该能够取消事件传播,e.cancel = true;但我看到当前您正在覆盖e变量(事件对象)。如果您将代码更改为以下内容,则应该没问题:

function goReturn(e_obj,str) {

  var e = (window.Event) ? e_obj.which : e_obj.keyCode;
  if (e.shiftKey && e=="13") {
    document.getElementById("wall").value = 
        document.getElementById("wall").value+"\n";
    e_obj.cancel = true;
  } else if(e=="13"){
    // ...continue to send data
  }
}
于 2011-01-05T15:48:23.127 回答
0

我为自己的用例编写了一个 jQuery 插件,它可能适合你的:http ://cburgmer.github.com/jquery-shiftenter/

该插件负责处理返回键,并显示焦点提示以解释行为。

于 2011-06-04T13:53:13.690 回答