我正在寻找一种方法,在contentEditable中执行“ Shift + Enter”操作时,其效果与仅按“ Enter”键时的效果相同,即将内容放入div而不是仅添加br
我尝试禁用Shift键,但没有结果:(希望您能为我提供帮助
<div class="editableDiv" contentEditable="true"><b>Hello</b> world.</div>
div{
color: green;
}
.editableDiv{
color: salmon;
}
$('.editableDiv').on('keydown', function(event) {
if (event.keyCode == 13 && !event.shiftKey) {
console.log('pure enter');
} else if (event.keyCode == 13 && event.altKey) {
console.log('triggered enter');
$(this).trigger(jQuery.Event("keydown", {
keyCode: 13,
altKey: false
}));
}
});
需要触发时,只需按“ Shift + Enter”即可按“ Enter”键
答案 0 :(得分:0)
所以听起来您希望“ Shift + Enter”执行与“ Enter”相同的操作,对吗?
如果是这样,则可以将操作放入单个单独的函数中,然后在两种情况下都调用它。例如:
func applicationDidEnterBackground(_ application: UIApplication) {
NotificationManager.shared.schedule(notification)
}
func applicationDidBecomeActive(_ application: UIApplication) {
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: ["notification"])
}
此外,如果您不需要在用户点击“ Shift + Enter”和“ Enter”时执行任何其他操作,则可以将代码缩短为:
function MyFunctionName () {
$('.editableDiv').trigger(jQuery.Event("keydown", {
keyCode: 13,
shiftKey: false
}));
}
$('.editableDiv').on('keydown', function(event) {
if (event.key === 'Enter' && !event.shiftKey) {
console.log('pure enter');
MyFunctionName();
} else if (event.key === 'Enter' && event.shiftKey) {
console.log('triggered enter');
MyFunctionName();
}
}
在这种情况下,您可能不需要单独功能中的代码。
我编辑了答案,以包括更好的比较运算符===。请参阅此以获取更多信息:Which equals operator (== vs ===) should be used in JavaScript comparisons?
此外,请使用key而不是keyCode,因为根据https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent,已不推荐使用keyCode
答案 1 :(得分:0)
假设您有错别字,并且您的问题中的altKey应该是shiftKey。
您可以这样做:
$('.editableDiv').on('keydown', function(event) {
var shiftEnter = event.keyCode == 13 && event.shiftKey;
var enterOnly = event.keyCode == 13 && !event.shiftKey;
if (shiftEnter || enterOnly) {
console.log('triggered enter');
//Do something here
}
else {
console.log("Some other key pressed");
});