【问题标题】:Input field with type date or type text输入日期或文本类型的字段
【发布时间】:2016-11-10 00:42:16
【问题描述】:

我有一个带有日期字段的 Laravel 应用程序。

当我使用“type=text”时

<input type="date" class="form-control" id="startdate" placeholder="Start date" name="startdate" />

我得到了存储在我的数据库中的值。

当我使用“type=date”时

<input type="date" class="form-control" id="startdate" placeholder="Start date" name="startdate" />

我得到 dd/mm/yyyy 和一个下拉列表(日期选择器)来为每个选择一个数字。我本来希望 dd、mm 和 yyyy 会预先填充我数据库中的日期。

虽然 input=text 有效,但我不喜欢这样,因为用户可以在该字段中输入任何文本。

最好的方法是什么?保留 input=date 并修复它还是将其放入 input=text 并进行服务器端验证?

【问题讨论】:

  • 为什么您希望日期字段预先填充您数据库中的任何内容?您没有value 来设置初始日期。
  • 应该始终执行服务器端验证,因为 html 字段的操作非常容易。我能想到的最好方法是使用 UI 来选择日期,HTML 5 (type=date) 或 jQuery datepicker 插件。提交后,您应该验证服务器端的输入值。 jQuery datepicker 的优点是可以选择输入格式,便于验证。
  • @MarcB 正确,我正在使用 Javascript $('#edit-auction-modal ').find('input#startdate').val(formattedStartDate) 设置该输入字段。它适用于其他非日期字段。
  • 确保使用YYYY-MM-DD 格式设置它:stackoverflow.com/questions/14212527/…

标签: javascript php html laravel-5


【解决方案1】:

试试这个

function getDefaultDate(curDate){
var dt = new Date(curDate);
var date = dt.getDate();
var month = dt.getMonth();
var year = dt.getFullYear();
if (month.toString().length == 1) {
    month = "0" + month
}
if (date.toString().length == 1) {
    date = "0" + date
}
return year.toString() + "-" + month.toString() + "-" + date.toString();
}

var fdate = getDefaultDate(curDate); // pass db date

document.getElementById("startdate").value = fdate;

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2020-09-07
    • 2018-01-13
    相关资源
    最近更新 更多