2009-12-04 5 views
1

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

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

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

ответ

2

Вы ищете DateTime.TryParse?

DateTime dt; 
bool isValid = DateTime.TryParse("03/__/____", out dt); // returns false 
+0

Я считаю, что он имеет на стороне клиента –

3

На стороне клиента, используйте ONBLUR контроля, чтобы вызвать функцию яваскрипта, т.е. .:

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

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

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

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

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

0

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

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

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

2

используйте следующий 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 
    } 

это регулярное выражение пример был взят из here

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

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/

+0

Я сделаю этот снимок спасибо – Eric