JQuery DatePicker Onselect не стреляет - PullRequest
1 голос
/ 07 декабря 2010

У меня есть 2 поля ввода для ввода даты начала и окончания. Мне нужно убедиться, что дата начала предшествует дате окончания. У меня есть следующий код, чтобы проверить это, но код, кажется, не запускается, когда Я прикрепляю к событию onselect элемента управления datepicker. Может кто-нибудь сказать, что я делаю неправильно?

<script language="javascript" type="text/javascript">
       $(document).ready(function() {
           $(".date").datepicker({
           onSelect:function(dateText,inst){

           var startDate=new Date($("#_createDateFromInput").val());
           var endDate=new Date($("#_createDateToInput").val());
           if(startDate!=""&&endDate!="")
            {
                if(startDate>endDate)
                {
                    alert("End date cannot be earlier than start date");
                }
             }

          }

       });});
   </script>

спасибо !!

Разметка для вышеупомянутого (это в asp.net):

<label>Date From</label> 
<input class="date" runat="server"  id="_createDateFromInput" />
<label id="to">To</label>
<input class="date" runat="server"  id="_createDateToInput"  />

Эль Ронноко, я полагаю, зацепился за что-то ... Я замечаю, когда удаляю тэг runat = "server", я могу запустить даже ... однако теперь я столкнулся с другим проблема для получения значения во время обратной отправки сообщения (т. е. когда пользователь, наконец, отправляет) ... у кого-нибудь есть идея?

Ответы [ 3 ]

0 голосов
/ 07 декабря 2010

Я использую этот код со страницы примера jQuery UI: http://jqueryui.com/demos/datepicker/#event-search

Обычно требуется 2 входа, делает их датчиками, а затем выбор ограничивает как минимальную, так и максимальную дату. Это очень умный кусок кода.

$(function() {
    var dates = $( "#from, #to" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onSelect: function( selectedDate ) {
            var option = this.id == "from" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" );
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });
});
0 голосов
/ 07 декабря 2010

спасибо, ребята, за весь ваш вклад. Я использовал многое из того, что вы записали. Я смог по какой-то причине выполнить эту работу, имея атрибут runat="server", который вызывает все виды проблем для jquery. Мне пришлось удалитьпометьте и получите к нему доступ, используя объект запроса, свойственный странице. Для тех, кто интересуется синтаксисом:

request.form["startDate"].tostring();

, где startdate - это значение имени атрибута для этого поля.

0 голосов
/ 07 декабря 2010

Более простой способ добиться этого - предотвратить выбор пользователем более ранней даты для endDate.

Это можно сделать просто, используя опцию minDate плагина Datepicker

$("#startDate").datepicker({
    onSelect:function(dateText,inst){
        $( "#endDate" ).datepicker( "option", "minDate", new Date(dateText) );
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...