如何使Datebox Jquery Mobile Input字段可单击?

时间:2014-06-03 12:46:33

标签: javascript jquery css jquery-mobile datebox

我有两个日期字段。 Field 2运行正常。在第二个字段的输入类型日期上单击任意位置可打开日历。但同样不适用于第一个日期字段。当我点击日期字段的日历图标时,它会打开日历,但是当我点击字段1的日期字段中的任意位置时,我希望该日历会弹出。 为什么它适用于第二个字段,但不适用于第一个字段。

此外,默认日期未设置为今天的日期。

http://jsfiddle.net/KJ4e5/3/

HTML

<body>
    <div id="doc">
<table>
<tr>
                        <td>

                         <input name="date1" id="date1" type="date"  data-role="datebox" data-options='{"mode": "calbox","dateFieldOrder":["d","m","y"], "useNewStyle":true,"overrideDateFormat": "%d/%m/%Y", "afterToday":true}' />
                        </td>
                        <td>

                            <input name="date2" id="date2" type="date" data-role="datebox" data-options='{"mode": "calbox","dateFieldOrder":["d","m","y"], "useNewStyle":true,"overrideDateFormat": "%d/%m/%Y", "afterToday":true}'/>
                        </td>
                    </tr>
</table>
        </div></body>

// JS

$( document ).on( "pageinit", "#doc", function() { 
    var defaultPickerValue = new Date();
    var today = defaultPickerValue.getDate() + "/" + (defaultPickerValue.getMonth()+1) + "/" + defaultPickerValue.getFullYear();

     $('#date1').val(today);
     $('#date2').val(today);

$('#date1').on('change', function() {
        if ( $('#date2')) {
            $('#date2').val($('#date1').val());
              var temp = new Date();
              var start = $('#date1').datebox('getTheDate');
              var diff = parseInt((start - temp) / ( 1000 * 60 * 60 * 24 ));
              diffstrt = (diff * -1)-1; 
            $("#date2").datebox("option", {
                "minDays": diffstrt
            });
        }
    });

});

1 个答案:

答案 0 :(得分:3)

我无法解释为什么2个框的行为不同,但是如果你明确地将useFocus选项分配给框,它们都会起作用:

<input name="date1" id="date1" type="date" data-role="datebox" 
    data-options='{"mode": "calbox","dateFieldOrder":["d","m","y"], 
                   "useNewStyle":true, "overrideDateFormat": "%d/%m/%Y",
                   "afterToday":true, "centerHoriz": true, "useFocus": true}' />
  

以下是您更新的 FIDDLE

在小提琴中,我也改变了你的剧本。使用日期框,您可以按如下方式设置日期:

var defaultPickerValue = new Date();
$('#date1').datebox('setTheDate', defaultPickerValue).trigger('datebox', {'method':'doset'});


$('#date1').on('change', function () {
    if ($('#date2')) {
        var temp = new Date();
        var start = $('#date1').datebox('getTheDate');
        $('#date2').datebox('setTheDate', start).trigger('datebox', {'method':'doset'});
        var diff = parseInt((start - temp) / (1000 * 60 * 60 * 24));
        diffstrt = (diff * -1) - 1;
        $("#date2").datebox("option", {
            "minDays": diffstrt
        });
    }
});