Javascript移位+;输入(Firefox)
我看了一下,发现了一些东西,但似乎没有任何东西像我所希望的那样起作用 最初我的解决方案是使用internet explorer和chrome,但不是firefox(这对我来说是不满意的,因为我没有工作) 我要找的是一个简单的文本区域,它在enter键上发送数据,但在Shift+enter键上创建新行。以下是我所拥有的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
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)