Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript移位+;输入(Firefox)_Javascript_Events_Firefox_Keycode - Fatal编程技术网

Javascript移位+;输入(Firefox)

Javascript移位+;输入(Firefox),javascript,events,firefox,keycode,Javascript,Events,Firefox,Keycode,我看了一下,发现了一些东西,但似乎没有任何东西像我所希望的那样起作用 最初我的解决方案是使用internet explorer和chrome,但不是firefox(这对我来说是不满意的,因为我没有工作) 我要找的是一个简单的文本区域,它在enter键上发送数据,但在Shift+enter键上创建新行。以下是我所拥有的 function goReturn(e,str) { var e = (window.Event) ? e.which : e.keyCode; if (e.shiftK

我看了一下,发现了一些东西,但似乎没有任何东西像我所希望的那样起作用

最初我的解决方案是使用internet explorer和chrome,但不是firefox(这对我来说是不满意的,因为我没有工作)

我要找的是一个简单的文本区域,它在enter键上发送数据,但在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和enter上发送数据(这是我遇到的问题)


感谢您的帮助

以您的表单(onsubmit=“…”)捕获提交调用。在那里,检查最后一个
输入
是否与
移位
组合。如果是,则在提交请求中返回false


如果在
e.shiftKey&&e==“13”
上返回
false
,也可以尝试。

您应该能够通过
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
  }
}

我已经为自己的用例编写了一个jQuery插件,它可能适合您的:


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

为什么将数字括在引号中<代码>e。其中不是字符串!请不要更改文本区域的默认预期行为。按return键应始终插入新行。如果有的话,您应该保留大部分默认行为不变,并使用shift+enter来提交表单。您在函数的第一行隐藏
e
e.shiftKey
将始终为false(除非您将该属性添加到字符串原型…)。我假设你的实际代码没有这样做,你能用它更新你的问题吗?嗨,文本区本身并不是来自一个表单,它是自己的。并调用函数onkeyup(和一个onkeydown)