【发布时间】: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 函数,但它的工作方式相同。我也试过onselect、oninput,但没有任何效果。
我是 javascript 的初学者,这让我从昨晚开始发疯。我非常接近让它工作,但感觉还很遥远。
我的方法 解决这个问题的一种方法是仔细观察 iphone 中的 datepicker,我发现只要我在手机中打开 datepicker,它就会立即选择日期,也许这就是它调用 javascript 函数的原因。
但是,如果它可以等待我选择日期,直到我在 datepicker 中按“完成”(它在 iphone 中),这个问题就可以消除
请指导我如何解决这个问题
【问题讨论】:
-
你能以某种方式检查控制台输出吗?关闭日期选择器时会记录哪个事件? (另外,你为什么用 Java 来标记这个......?)
-
我无法检查它。我试图转到源选项卡并查找事件侦听器,但看不到任何东西。
-
关于 java 标签.. 我记得删除它是错误的。对不起,如果我忘了这样做。
-
您需要自己添加事件日志。
$('form, input').on('input, change', function () { ... }); -
好的。我写了这段代码
<script> $(document).ready(function(){ $("input").on("change", function (e){ console.log(e); }); }); </script>,我得到了这个输出:w.Event {originalEvent: Event, type: "change", isDefaultPrevented: ƒ, target: input#date-input.form-control, currentTarget: input#date-input.form-control, …}这是你问的吗?
标签: javascript html datepicker