如何在PhoneGap / Android中实现DATE PICKER?

时间:2013-06-21 06:39:20

标签: javascript android jquery datepicker cordova

我试图在android中实现日期选择器。我希望它能够获取数据并以文本格式显示

  <html>
  <head>
    <script type="text/javascript" charset="utf-8" src="cordova-2.5.0.js"></script>
    <script type="text/javascript" charset="utf-8" src="datePickerPlugin.js"></script>
  <script type="text/javascript" charset="utf-8">

  function dateTest() {
      var myNewDate = new Date();

      window.plugins.datePicker.show({
          date : myNewDate,
          mode : 'date', // date or time or blank for both
          allowOldDates : true
      }, function(returnDate) {
        var newDate = new Date(returnDate);
            currentField.val(newDate.toString("dd/MMM/yyyy"));

            // This fixes the problem you mention at the bottom of this script with it not working a second/third time around, because it is in focus.
            currentField.blur();
      });
  }
</script>
</head>
<body bgcolor="#ffffff">
<hr>DatePicker Test<hr><br>
     <input type="button" onClick ="dateTest()" value ="Today's Date!!" />
     <div id="view"></div>
</body>
</html>

我将其作为警告获取......但无法将其作为字符串存储在同一页面上

5 个答案:

答案 0 :(得分:7)

为什么要放松你的头?

对于设备对它的解释,<input type="date">总是会有所不同,在某些Android设备中它甚至都不起作用,

有很多插件,插件,无论如何,

我个人喜欢,并使用mobiscroll:Link

编辑:Mobiscroll现已付费,但有大量免费的前端移动框架,可能所有人都有一个日期选择器,例如jQuery Mobile-datepicker

答案 1 :(得分:2)

您的currentField似乎未定义。在AVD上运行之前,您是否检查过Chrome控制台?请尝试发布您尝试显示日期的元素。

目前,我假设你正在尝试执行以下代码所做的事情

$('.nativedatepicker').focus(function(event) {
            var currentField = $(this);
            var myNewDate = new Date(Date.parse(currentField.val())) || new Date();

            // Same handling for iPhone and Android
            window.plugins.datePicker.show({
                date : myNewDate,
                mode : 'date', // date or time or blank for both
                allowOldDates : true
            }, function(returnDate) {
                var newDate = new Date(returnDate);
                var newString = newDate.toString();
                newString = newString.substring(0,15);
                currentField.val(newString);
                // This fixes the problem you mention at the bottom of this script with it not working a second/third time around, because it is in focus.
                currentField.blur();
            });
        });

元素如下

<input type="text" class="nativedatepicker" readonly value = "Fri Jun 21 2013"/>

像魅力一样!希望它有所帮助!!

答案 2 :(得分:2)

我想要发生的事情很简单 - 我只想在点击某个字段时显示一个日期选择器。

然而,和Aleks一样,我不知道在html中放什么,如何在html中使用它,以及我应该在html中放置什么以在某些输入上调用datepicker。

plugin的文档不完整。

我找到了test project的解决方案。 步骤如下:

  1. 先决条件:安装phonegap / cordova-cli
  2. 安装Cordova的设备插件:$ cordova plugin add org.apache.cordova.device
  3. 安装Dirk的 datepicker 插件:$ cordova plugin add https://github.com/DURK/cordova-datepicker-plugin
  4. 从测试项目中复制nativedatepicker.js并将其放在项目的 js 文件夹中。此文件具有showDatePicker(), showDateTimePicker()便利功能。
  5. 添加ff。到index.html代码:
  6. 注意:在浏览器中测试时,日期选择器不会显示

    ....
        <div class="form-group">
          <label>Appointment</label>
          <input type="text" class="form-control datepicker" id="appointment">
        </div>
    ....
    <script src="js/nativedatepicker.js"></script>
    <script src="cordova.js"></script>
    <script type="text/javascript">
        (function($){
            $(document).ready(function () {
                $(document).on('click', '.datepicker', function () {
                    showDatePicker($(this), 'date');
                });
    
                $(document).on('click', '.timepicker', function () {
                    showDatePicker($(this), 'time');
                });
    
                $(document).on('click', '.datetimepicker', function () {
                    if (device.platform === "Android")
                        showDateTimePicker($(this));
                    else
                        showDatePicker($(this), 'datetime');
                });
            });
        })(jQuery);
    </script>
    

答案 3 :(得分:1)

这是我的工作实施。输入类型是文本,只读。

$('.nativedatepicker').focus(function(event) {
        var currentField = $(this);
        var myNewDate = new Date();
        window.plugins.datePicker.show({
            date : myNewDate,
            mode : 'date',
            allowOldDates : true
        }, function(returnDate) {
            var array = returnDate.split("/");
            var day = array[2], month = array[1];
            if (day <= 9)
                day = "0" + day;
            if (month <= 9)
                month = "0" + month;
            currentField.val(array[0] + "/" + month + "/" + day);
            currentField.blur();
        });
    });

答案 4 :(得分:1)

如果有可用的日期选择器,您为什么要实施自定义日期选择器?

您只需使用<input type="date">创建常用的iOS日期选择器。

有关移动设备上输入字段的更多信息,我建议:http://blog.teamtreehouse.com/using-html5-input-types-to-enhance-the-mobile-browsing-experience