【问题标题】:How to make BootStrap-DatePicker to Submit Form on Enter key press如何使 BootStrap-DatePicker 在按 Enter 键时提交表单
【发布时间】:2020-02-10 11:07:39
【问题描述】:

我的页面包含第一个 UI 元素 Bootstrap datetimepicker4 以及几个输入字段和 2 个提交按钮:1 个用于验证表单并重定向到下一页,另一个是 Back button

当我在网络上打开应用程序时,焦点是 datetimepicker 输入,然后单击 Next 按钮,它正在提交表单。

但是当我在 iPhone 中打开网站时,焦点在 datetimepicker 上,当我在 iPhone 键盘上单击 Go button 时,它没有提交表单。 我的要求是当我在 iPhone 中点击 Go 按钮时提交表单。

我在我的页面中使用以下脚本

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>

这是我的看法:

     <div class="input-group date jsdate">
            <input type="text"
                   class="form-control">
            <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
        </div>
    <input name="submit" class="btn btn-primary order-2" type="submit" value="Next">
    <input name="back" class="btn btn-outline-secondary mr-2 " type="submit" value="Back" formnovalidate formaction="BackToContactInfo?tabId=@Model.TabId">

还有 datetimepicker 的脚本

$(function () {
    $('.jsdate').datetimepicker({
        format: 'L',
        maxDate: new Date()
    });
});

我观察到在 datetimepicker 中的 enter keypress 中有两个事件正在触发:e.preventdefaulte.stoppropagation。 因此,根据我的要求,当按下输入而不是停止传播时,我想提交表单。 那么是否有任何设置可以继续传播,请帮助我。

【问题讨论】:

  • 代码中的“开始”按钮在哪里?
  • 当我在 iPhone 中打开我的网站时,Go 按钮将出现在 iPhone 键盘中

标签: bootstrap-datetimepicker


【解决方案1】:

iOS 设备上的“Go”按钮将与“Enter”按钮具有相同的键码,因此您可以检测到该按钮上触发的点击事件,如下所示,

$(document).keypress(function(e) {
  if(e.which == 13) { // for enter key
   // Do your form submission call here
  }
});

我希望这对你有用。

【讨论】:

  • 但是,如果我输入无效日期并按回车怎么办?所以我想要的是 bootstrap datepicker 在 enter 按键中做 preventdefault 和 stoppropagation 。那么您能否提供一些解决方案来停止处理这些事件而不是停止
【解决方案2】:

你可以用这个:

HTML:

<form action="#" id="form">
   <div class="input-group date jsdate" style="position: relative;">
       <input type="text" class="form-control" id="date">
       <span class="input-group-addon" ><i class="fa fa-calendar"></i></span>
   </div>
   <input name="submit2" class="btn btn-primary order-2" type="submit" value="Next">
   <input name="back" class="btn btn-outline-secondary mr-2 " type="submit" value="Back" formnovalidate formaction="BackToContactInfo?tabId=@Model.TabId">
</form>

JS:

 $('#date').keydown(function (e) {
     if (e.keyCode == 13) {
         $('#form').submit();
     }
 })

请注意,要使用 jquery 提交方法,您必须更改 提交 按钮的名称。

【讨论】:

  • 对问题进行了必要的编辑,请检查它,如果可能,请为我提供一些解决方案。
  • 如果你专注于日期选择器点击 Go 这将提交表单。我认为您的问题是,在选择日期后,焦点不在输入上。对吗?
  • 是的,重点不在日期选择器上,我也对我的问题进行了必要的更改,请查看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 2010-10-28
相关资源
最近更新 更多