проверить текстовое поле для даты рождения - PullRequest
0 голосов
/ 20 февраля 2012

Приведенный ниже код предназначен для проверки текстового поля на дату рождения.Условия:

  1. Текстовое поле не может быть пустым
  2. Дата текстового поля должна быть в формате дд / мм / гггг
  3. Дата текстового поля не должна быть больше текущей даты,то есть;нет будущей даты (чтобы показать ошибку типа -U r еще не родился, чувак)

<asp:TextBox ID="txtDateOfBirth" runat="server" CausesValidation="True" />
          (dd/mm/yyyy e.g. : 12/12/2011)
<asp:CustomValidator runat="server" ID="valDateRange" ControlToValidate="txtDateOfBirth" ErrorMessage="enter valid date" />

Но проблема в том, что текстовое поле находится внутри оболочки ajax, поэтому только клиентпроверки стороны будут работать.Кто-нибудь здесь, плз, помогите мне с любыми советами, предложениями или с рабочим кодом!Я буду очень доволен, потому что я работал над этим с утра

Ответы [ 4 ]

3 голосов
/ 20 февраля 2012

У вас может быть свойство ClientValidationFunction на вашем CustomValidator ...

<asp:CustomValidator runat="server" ID="valDateRange" ControlToValidate="txtDateOfBirth" ErrorMessage="enter valid date" ClientValidationFunction="validateDate" />

Затем создайте функцию Javascript:

function validateDate(sender, e) {

    // Split out the constituent parts (dd/mm/yyyy)    
    var dayfield = e.Value.split("/")[0];
    var monthfield = e.Value.split("/")[1];
    var yearfield = e.Value.split("/")[2];

    // Create a new date object based on the separate parts
    var dateValue = new Date(yearfield, monthfield - 1, dayfield)

    // Check that the date object's parts match the split out parts from the original string
    if ((dateValue.getMonth() + 1 != monthfield) || (dateValue.getDate() != dayfield) || (dateValue.getFullYear() != yearfield)) {
        e.IsValid = false;
    }

    // Check for future dates
    if (e.IsValid) {
        e.IsValid = dateValue <= new Date()
    }
}
1 голос
/ 20 февраля 2012

Я согласен с ответом varangian_12, но не забудьте также выполнить какую-либо проверку на стороне сервера для случая, когда у вашего пользователя отключен Javascript, или отключите его, чтобы обойти проверку

Вы можетевыполните простое DateTime.TryParse([string value]), а затем проверьте, чтобы дата произошла в прошлом

Вам просто нужно быть уверенным в том, что обработать сценарии с крайним случаем

0 голосов
/ 21 февраля 2012

Вы должны попробовать это. Я буду работать отлично.Вы также можете использовать «jquery.validate.js» для make Textbox не может быть пустым.также в css вы должны создать ошибку класса

красного цвета.

 <p>   type="text/css" media="all" /></p>
<p><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script></p>

   <p>   type="text/javascript"></script></p>
 <p> <script type="text/javascript"></p>
<p>    $(function () {</p>
  <p>        var minDate = new Date('1/1/1990');</p>
     <p>    var todaysDate = new Date();</p>
     <p>    var maxDate = new Date(todaysDate.getFullYear(),</p>
        <p>                    todaysDate.getMonth(),</p>
             <p>               todaysDate.getDate() - 1);</p>
       <p>  var currentsYear = todaysDate.getFullYear();</p>

        <p> var range = '1900:' + currentsYear</p>
    <p>      $('#txtDOB').datepicker({</p>
     <p>         minDate: minDate,</p>
       <p>       maxDate: maxDate,</p>
       <p>       changeMonth: true,</p>
       <p>       changeYear: true,</p>
       <p>       yearRange: range</p>
      <p>    });</p>
  <p>    });  </p>

0 голосов
/ 20 февраля 2012

Нет необходимости использовать valodators, используйте requiredfieldvalidator для проверки, если он не пустой, и используйте средство выбора даты jquery, чтобы поле получило календарь даты, когда получите фокус,

вот пример, это очень легко, если вам нужна помощь, пожалуйста, дайте мне знать: http://jqueryui.com/demos/datepicker/

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