看了一眼,发现了一些事情,但似乎没有任何工作,因为我喜欢它。
最初,我的解决方案是使用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上发送数据并输入(这就是我遇到的问题)。
感谢您的帮助
答案 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/
该插件负责处理返回键,并显示焦点提示以解释行为。