Forms 引导标记输入表单按enter键提交

Forms 引导标记输入表单按enter键提交,forms,input,bootstrap-tags-input,Forms,Input,Bootstrap Tags Input,在bootstrap标记输入中,按enter键提交下一个标记表单! 解决办法是什么 $("#inputID").tagsinput(); 回车键是回发表单的注册表。这就是为什么会发生这样一种情况:当您按下“回车”键时,它会触发“回发”事件,因此表单进入提交状态。 解决方案: 在页面加载时,保留用于标记输入的enter键: @using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { onkeydown

bootstrap标记输入中,按enter键提交下一个标记表单!
解决办法是什么

$("#inputID").tagsinput();

回车键是回发表单的注册表。这就是为什么会发生这样一种情况:当您按下“回车”键时,它会触发“回发”事件,因此表单进入提交状态。 解决方案: 在页面加载时,保留用于标记输入的enter键:

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { onkeydown = "return event.keyCode!=13" }))

如果使用asp.net mvc框架,这是一个简单的示例

首先,您需要将'Enter'映射到您的
tagsinput
confirmkeys
选项,然后您需要在Enter键上调用
preventDefault()
,以防止提交表单。在我的解决方案中,当用户集中在标记输入字段中时,它仅阻止按enter键提交

为了增加一点冗余,我还将enter键重新映射到输入字段中的一个逗号,这只是为了确保

  $('#tags-input').tagsinput({
    confirmKeys: [13, 188]
  });

  $('#tags-input input').on('keypress', function(e){
    if (e.keyCode == 13){
      e.keyCode = 188;
      e.preventDefault();
    };
  });

仅供参考,回车键映射为13,逗号在JS中为188。

转到tagsinput.JS

查找行:

self.$container.on('keypress', 'input', $.proxy(function(event) {
在本功能结束前,添加以下内容:

if (event.which == 13) {
    return false; // dont submit form !!
}
试试这个:

$('.bootstrap-tagsinput input').keydown(function( event ) {
    if ( event.which == 13 ) {
        $(this).blur();
        $(this).focus();
        return false;
    }
})
这是我的工作

$('.bootstrap-tagsinput input[type=text]').on('keydown', function (e) {
   if ( event.which == 13 ) {
           $(this).blur();
           $(this).focus();
           return false;
      }
 });

默认情况下,cancelConfirmKeysOnEmpty选项设置为true,但在标记delimeter keydown事件中设置为false calls.preventDefault时。将其设置为false

此解决方案还解决了“带逗号”的问题


我面临着同样的问题。。。你找到解决方案了吗?你使用哪种后端框架?共享示例代码??可能重复的代码非常有用。我想添加一个更新。我想现在逗号键代码改成了44。如果源代码是sh*的一部分,我想修复它。祝你有美好的一天,杰夫。100%同意。通常的过程是建议修复并提交带有PR的修复,而不是直接编辑源代码。首先防止将项目添加到输入中
cancelConfirmKeysOnEmpty: false,

// If the field is empty, let the event triggered fire as usual
if (self.options.cancelConfirmKeysOnEmpty === false) {
  event.preventDefault();
}