【问题标题】:html input type date calls javascript function before i select date in Iphone在我在 Iphone 中选择日期之前,html 输入类型日期调用 javascript 函数
【发布时间】:2019-05-03 11:02:38
【问题描述】:

我正在制作一个 Spring Boot 应用程序并使用 HTML 来更新我的视图。在这里,我尝试在 html 表单中使用 input type date 实现本机日期选择器,用户将在其中选择日期,然后页面将刷新并提交表单,并将所选日期作为 url 参数。

表单中的文本框还将在页面刷新后以我需要的格式显示在 datepicker 中选择的值。

它的制作方式是不应该有提交按钮来提交表单,一旦用户从input字段中选择日期,页面应该自动刷新并将值保存在url参数中以及在表单中的文本框中。

下面是我的代码:

HTML:

<form action="#" id="myForm" method="get">
    <input type="text" id="save-date" name="show_date" class="form-control"> 
    <input type="date" onchange="changeDateFormat()" name="date" class="form-control"></input>
</form>

Javascript:

<script type="text/javascript">
    function changeDateFormat(){
        var received_date = document.getElementById("date-input").value;
        var split_dashes = received_date.split('-');
        var final_date = split_dashes[2]+'.'+split_dashes[1]+'.'+split_dashes[0]
        document.getElementById("show_date").value = final_date;
        document.getElementById("myForm").submit();
    }
</script>

我的问题

这在除 ios/iphone 8 之外的所有平台上都非常有效。在 ios/iphone 8 上,只要我单击输入类型日期字段,日期选择器就会立即打开并快速刷新页面。我希望它等待我的输入,但它不允许我。而是快速调用js函数并刷新页面。

我不会在 chrome 或任何其他浏览器中遇到这种情况。在 chrome 中,日期选择器将作为日历打开,它会等待我选择日期。

我尝试了什么

我尝试了整个晚上和今天的一半时间来理解为什么会发生这种情况。似乎在 ios datepicker 中,只要我单击打开下拉选择器,它就会快速选择日期。除此之外,我尝试实现 jquery 函数,但它的工作方式相同。我也试过onselectoninput,但没有任何效果。

我是 javascript 的初学者,这让我从昨晚开始发疯。我非常接近让它工作,但感觉还很遥远。

我的方法 解决这个问题的一种方法是仔细观察 iphone 中的 datepicker,我发现只要我在手机中打开 datepicker,它就会立即选择日期,也许这就是它调用 javascript 函数的原因。

但是,如果它可以等待我选择日期,直到我在 datepicker 中按“完成”(它在 iphone 中),这个问题就可以消除

请指导我如何解决这个问题

【问题讨论】:

  • 你能以某种方式检查控制台输出吗?关闭日期选择器时会记录哪个事件? (另外,你为什么用 Java 来标记这个......?)
  • 我无法检查它。我试图转到源选项卡并查找事件侦听器,但看不到任何东西。
  • 关于 java 标签.. 我记得删除它是错误的。对不起,如果我忘了这样做。
  • 您需要自己添加事件日志。 $('form, input').on('input, change', function () { ... });
  • 好的。我写了这段代码&lt;script&gt; $(document).ready(function(){ $("input").on("change", function (e){ console.log(e); }); }); &lt;/script&gt;,我得到了这个输出:w.Event {originalEvent: Event, type: "change", isDefaultPrevented: ƒ, target: input#date-input.form-control, currentTarget: input#date-input.form-control, …}这是你问的吗?

标签: javascript html datepicker


【解决方案1】:

对于将来也有同样问题的人。只需尝试使用onblur 事件而不是onchange 触发函数。 onchange 在这里不起作用,因为在 iphone 中,只要您尝试移动日期选择器微调器以选择日期,该字段就会立即更新。因此,对于onblur,它会一直等到用户有意关闭日期选择器,然后才会调用函数。

谢谢。

【讨论】:

    猜你喜欢
    • 2019-09-12
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多