Подтвердить дату без использования валидаторов? - PullRequest
1 голос
/ 04 декабря 2009

Есть ли способ узнать, является ли дата действительной без использования валидаторов?

Я не могу использовать валидаторы в этом случае, и это длинная история, которую слишком много печатать, но она связана с вложенными элементами управления, которые невозможно найти в javascript. Но прежде чем вставить дату, я хочу убедиться, что она действительна прямо перед вставкой. есть идеи?

Я использую maskeditor, и дата может выглядеть примерно так "03/__/____", и это может вызвать проблему вставки.

Ответы [ 4 ]

3 голосов
/ 05 декабря 2009

На стороне клиента используйте onBlur элемента управления для вызова функции javascript, т.е.

function makeDateValid(text)
{
   //relevent js date formatting code
   return validDateText;
}
</script>

и под вашим контролем

<asp:TextBox ID="txtDate" runat="server" 
onBlur="this.value=makeDateValid(this.value)" />

тогда вам не нужно искать элемент управления с помощью javascript.

Вы не должны доверять этому, чтобы сохранить ваш SQL в безопасности. Вы должны выполнить проверку на стороне сервера (DateTime.TryParse) и параметризовать свои значения.

2 голосов
/ 05 декабря 2009

используйте следующий javascript. Затем вы можете отключить кнопку отправки / ссылку, пока проверка не пройдет.

   function checkdateformat(userinput){
      var dateformat = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
      return dateformat.test(userinput) //returns true or false depending on userinput
    }

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

Также посмотрите эти другие примеры / код:

http://www.the -art-of-web.com / javascript / validate-date /

http://www.rgagnon.com/jsdetails/js-0063.html

И плагин jQuery: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

2 голосов
/ 04 декабря 2009

Вы ищете DateTime.TryParse ?

DateTime dt;
bool isValid = DateTime.TryParse("03/__/____", out dt); // returns false
0 голосов
/ 05 декабря 2009

Самый надежный способ - использовать элемент управления календаря, он сохраняет свой результат в переменной datetime, которая по определению будет «допустимой», и генерирует различные отформатированные строки для любых целей.

Если вам нужно использовать редактирование, то альтернативой TryParse будет проверка наличия в строке двух и только двух косых черт, а затем выполнение строки. Разделение. Это даст вам три элемента отдельно, а затем проверит каждый элемент (Is array [0]> 0 и <13 is array [1]> 0 и <29,30,31,32 в зависимости от ситуации, это array [2]> = сегодня.год и <сегодня.год + 2 и т. д.) </p>

Таким образом, вы можете не просто сообщить о недопустимой дате, но и сообщить, какой компонент даты недействителен и почему. Поскольку вы, несомненно, получите конкретную информацию, когда отклоните теоретически действительную дату, которая не соответствует вашим бизнес-правилам, лучше поддерживать согласованность с вашими пользователями и быть максимально точными в процессе проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...