JavaScript中是否可以将Shift + Enter更改为Enter

时间:2019-05-14 21:24:58

标签: javascript jquery

我正在寻找一种方法,在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”键

2 个答案:

答案 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");
    });