Подтвердить что ты не робот

Выбор даты автоматически открывается

У меня есть код javascript, с помощью которого я хочу выполнить следующее. Я хочу, когда я нажму кнопку, чтобы она появилась, но параметр даты даты выбора даты не появляется автоматически (но в моем случае он открывается). Так что, другими словами, я палочку отключил этот автоокен. Вот script

<link rel="stylesheet" href="#" onclick="location.href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery.ui.all.css'; return false;"     type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"     type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"     type="text/javascript"></script>
</head>
<body>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#button").click(function () {
                var dates2 = $("#datePicker3,#datePicker4").datepicker({
                    autoOpen: false,
                    minDate: 0,
                    changeMonth: true,
                    numberOfMonths: 1,
                    onSelect: function (selectedDate) {
                        var option = this.id == "datePicker3" ? "minDate" : "maxDate",
                            instance = $(this).data("datepicker"),
                            date = $.datepicker.parseDate(
                            instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
                        dates2.not(this).datepicker("option", option, date);
                        calculate_total_price();
                    }

                }); ///
                $("#order-popup").dialog();
                $("#order-popup").show();
            });
        });
    </script>
    <input type="button" value="addclass" id="button">
    <div id="order-popup" style="display:none;" class="popup-content already-ordered">
        <input type="text" id="datePicker3" name="datepickerFrom" value="">
        <br/>
        <input type="text" id="datePicker4" name="datepickerTo" value="" style="margin-top:10px;margin-left:17px">
        </form>
    </div>
</body>
4b9b3361

Ответ 1

Причина, по которой показывает datepicker, заключается в том, что по умолчанию загружается input the datapicker по умолчанию focus.. см. здесь - это потому, что его первый input на форме.... если вы добавите еще один input до первого его штрафа → http://jsfiddle.net/JXtBM/1/

Один из способов решения этой проблемы - использовать кнопку для запуска открытия датпикера:

showOn: "button",
buttonImage: "http://jqueryui.com/demos/datepicker/images/calendar.gif",
buttonImageOnly: true,

Рабочий пример здесь

Ответ 2

Если вы не хотите сосредоточиться на datepicker, вы можете просто поставить перед ними еще один вход и сделать его "невидимым"

<input type="button" value="addclass" id="button">
<div id="order-popup" style="display:none;" class="popup-content already-ordered">
    <input style="height:0px; top:-1000px; position:absolute" type="text" value="">
    <input type="text" id="datePicker3" name="datepickerFrom" value="">
    <br/>
    <input type="text" id="datePicker4" name="datepickerTo" value="" style="margin-top:10px;margin-left:17px">
    </form>
</div>​

В этом случае вход имеет высоту 0px и выходит за пределы экрана, поэтому он не будет отображаться. Имейте в виду, что даты всегда должны быть выбраны, что позволяет пользователю писать, это риск из-за форматов даты, разделителей и т.д.

Ответ 3

Как сказал ManseUK, это потому, что метод диалога автоматически выбирает первый элемент "tabbable" внутри родительского элемента. Это сложно сделать, как показано в другом вопросе.

Один способ обхода (который, как мне кажется, выглядит странно, но работает), заключается в том, чтобы установить индекс вкладок в другой элемент над входами, например:

<div id="order-popup" style="display:none;" class="popup-content already-ordered">
    <p tabindex="1">Choose Dates:</p>
    <input type="text" id="datePicker3" name="datepickerFrom" value="" />
    <input type="text" id="datePicker4" name="datepickerTo" value="" style="margin-top:10px;margin-left:17px" />
</div>

Ответ 4

установите индекс вкладки в другой элемент, чтобы решить проблему следующим образом:

**<label tabindex="1">From Date:</label>**
<input type="text" name="from_date" id="from_date" readonly="readonly"  class="hasDatepicker">

<label>To Date</label>
<input type="text" name="to_date" id="to_date"  readonly="readonly" class="hasDatepicker">

Ответ 5

Попробуйте поставить инициализацию datepicker в обратном вызове документа, например:

$(document).ready(function(){

var dates2 = $( "#datePicker3,#datePicker4" ).datepicker({
                            autoOpen:false,
                            minDate:0,
                            changeMonth: true,
                            numberOfMonths: 1,
                            onSelect: function( selectedDate ) {
                                var option = this.id == "datePicker3" ? "minDate" : "maxDate",
                                instance = $( this ).data( "datepicker" ),
                                date = $.datepicker.parseDate(
                                    instance.settings.dateFormat ||
                                    $.datepicker._defaults.dateFormat,
                                    selectedDate, instance.settings );
                                dates2.not( this ).datepicker( "option", option, date );
                                calculate_total_price();
                            }

 });
});

и функция click содержит только:

$("#order-popup").dialog();
$("#order-popup").show();

Я не уверен на 100%, что это сработает, но, по крайней мере, это правильный способ выполнить инициализацию (если у вас уже есть эта страница, инициализируйте готово)

Ответ 6

Вы можете решить эту проблему, просто удалив фокус после $( "# order-popup" ). show();

    $(document).ready(function () {
        $("#button").click(function () {
            var dates2 = $("#datePicker3,#datePicker4").datepicker({
                autoOpen: false,
                minDate: 0,
                changeMonth: true,
                numberOfMonths: 1,
                onSelect: function (selectedDate) {
                    var option = this.id == "datePicker3" ? "minDate" : "maxDate",
                        instance = $(this).data("datepicker"),
                        date = $.datepicker.parseDate(
                        instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
                    dates2.not(this).datepicker("option", option, date);
                    calculate_total_price();
                }

            }); ///
            $("#order-popup").dialog();
            $("#order-popup").show();
            $('#datePicker3, #datePicker4').blur();
        });
    });

Ответ 7

Запуск "размытия" после создания решает проблему для меня. Я вижу это как рабочий стол. Я не хочу добавлять кнопку для открытия календаря или добавления дополнительных входов в мой документ.

$('[data-datepicker="datepicker"]').datepicker().trigger('blur');

Ответ 8

Лучший вариант - установить атрибут "автофокусировка" для другого элемента. Когда jquery откроет диалоговое окно, он будет искать элемент с атрибутом автофокуса и установить фокус на него. Если ни один не найден, фокус устанавливается на первый видимый элемент. <input type="text" id="txtDescription" autofocus />