2012-05-15 1 views
2

У меня есть datepicker с maxdate, установленным как сегодня. Вот как я определил его:Максимальное значение Datepicker не подтверждено

$('selector').datepicker({ 
yearRange: "c-100:+0", 
maxDate: '+0d', 
changeMonth : true, 
changeYear : true, 
showAnim:"fold" 
}); 

MaxDate свойство отлично работает, когда пользователь выбирает из Datepicker щ. Он показывает все будущие даты как отключенные; однако datepicker позволяет пользователю вводить дату через клавиатуру, а именно, где начинается проблема.

DatePicker даже проверяет значение вручную введенного текста, когда пользователь нажимает ввести (отправляет форму), но не проверяет его, когда он размыты, а затем форма отправлена; то есть, когда пользователь выходит из поля ввода без нажатия , введите. Это позволяет указать дату больше максимальной даты и может быть отправлена ​​без ошибки.

Я могу сделать ввод текста только для чтения, но в этом случае пользователь не может ввести дату с клавиатуры.

Поскольку я новичок в jquery, не хватает ли какого-либо свойства, которое будет проверяться при размытии?

ответ

2

Похоже, вы хотите, чтобы поле даты выбрало дату в прошлом и эта проверка не происходит, когда пользователь покидает поле. Я недостаточно знаком с Date Picker, чтобы сказать, что существует метод проверки, который вы могли бы специально вызвать, когда пользователь покидает поле с датой в будущем, но вы можете довольно легко написать свою собственную процедуру проверки, когда пользователь уйдет сфокусируйтесь на поле Date Picker.

Испытано:

$("selector").blur(function(e) { 
    var today = new Date(); 
    if ($(this).datepicker("getDate") > today) { 
     alert("Incorrect"); 
     // Here you could force their field to be equal to 
     // today if you would like or handle it otherwise 
    } 
}); 

Можно также проверить поле на кнопку.

Однако, даже все эти прекрасные средства защиты на месте, вы не может заменить эти для проверки на стороне сервера. Вы должны проверять и предоставлять правильные сообщения об ошибках в случае, если пользователь обходит защиту Javascript и отправляет форму с датой в будущем. Надеюсь, что это поможет тебе.

Update: Here действительно интересная дискуссия о размытости и фокусе в случае, если вы хотите, чтобы заблокировать поведение покинуть поле с будущей стоимостью. Это может быть или не быть применимым к тому, что вы хотите использовать/использовать.

Еще одна мысль заключается в том, что в сообщении об ошибке вы можете быть как можно более описательным в типах дат, которые должны вводиться (YYYY-mm-dd), чтобы пользователи с разных точек зрения (мм/дд/гг или год или независимо от того, знают ли они, почему их вклад отклоняется.

+0

Да, я буду проверять значение даты на серверной стороне. Хорошо спасибо за советы, спасибо большое –

+0

Добро пожаловать @ ankur20us; рад, что смогу помочь – veeTrain

2

Похоже, что это ошибка в jquery datepicker. Вам нужно будет написать свою собственную проверку для текстового поля, как указано veeTrain. Или взгляните на это, если хотите что-то готовое. http://keith-wood.name/uiDatepickerValidation.html

+0

Приятная находка в плагине; Вы использовали его? – veeTrain

+0

Я не использовал его в проекте, но тестировал его на веб-сайте. – Nilesh

Смежные вопросы