Ненавязчивая проверка в Chrome не будет проверяться с помощью дд / мм / гггг - PullRequest
53 голосов
/ 02 августа 2011

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

Если я использую Chrome (v12.0.742.122) и выбираю дату из средства выбора, например 13.08.2011, логика проверки jQuery не позволитстраницу для отправки, хотя я явно указал формат как «дд / мм / гг».

Если я изменю формат на 'dd / M / yy' и выберу дату, например, 13 августа 2011 года, она будет работать в Chrome, но затем не будет отправлена ​​мне в IE (v8.0.7600.16385).,В FireFox (v3.6.18) работают оба формата.

Какой сценарий проверки мне нужен, чтобы иметь возможность поддерживать форматы даты 'dd / mm / yy' в Chrome?

<html>
 <head>
  <link rel="stylesheet" type="text/css" href="jquery-ui.css" />
  <script type="text/javascript" src="jquery-1.4.4.js"></script>
  <script type="text/javascript" src="jquery.validate.js"></script>
  <script type="text/javascript" src="jquery.validate.unobtrusive.js"></script>
  <script type="text/javascript" src="jquery-ui.js"></script>
  <script type="text/javascript">
      $(document).ready(function () {
    $('.date').datepicker({ dateFormat: 'dd/mm/yy' });
            $.validator.addMethod("dateRule", function(value, element) {
      return true;
    },
    "Error message");
      });
  </script>
 </head>
 <body>
    <form>
        Date: <input type="text" name="myDate" class="date dateRule" />
        <input type="submit" />
    </form>
 </body>
</html>

Ответы [ 12 ]

0 голосов
/ 19 сентября 2012

Я также нашел решение, которое подходит для любой культуры.

http://devdens.blogspot.com/2011/11/jquery-validation-fix-for-date-format_29.html

Требуется изменить действительный файл jquery.valdiation.min.js, но пока он работает для меня.

0 голосов
/ 02 августа 2011

должен изменить метод dateRule, который вы определили в validate, на (например, регулярное выражение является простым):

$.validator.addMethod(
    "dateRule",
    function(value, element) {
        return value.match(/^\d\d?\/\d\d?\/\d\d$/);
    },
    "Please enter a date in the format dd/mm/yy"
);

Вы можете переключить регулярное выражение для чего угодно. Я получил это регулярное выражение для даты от здесь , которое поддерживает M / D / YY или M / D / YYYY или MM / DD / YYYY или MM / DD / YY: с 1/1/1920 по 12/31 / 2019; 29 и 30 февраля всегда разрешено

^((0?[13578]|10|12)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))$
...