Javascript Shift + Enter(Firefox)

时间:2011-01-05 13:27:44

标签: javascript events firefox keycode

看了一眼,发现了一些事情,但似乎没有任何工作,因为我喜欢它。

最初,我的解决方案是使用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
  }
}

这会在enter上发送数据,但也会在shift上发送数据并输入(这就是我遇到的问题)。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

在表单中收到提交电话(onsubmit =“...”)。在那里,检查上一个enter是否与shift结合使用。如果是,请将false返回到提交请求。

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

答案 1 :(得分: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
  }
}

答案 2 :(得分:0)

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

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