asp.net jquery datepicker ошибка - PullRequest
2 голосов
/ 11 мая 2010

Я также успешно использую jquery datepicker с замаскированным плагином ввода в веб-форме aspx. Я заметил ошибку: когда я вставляю дату, выбирая ее в календаре, а затем пытаюсь изменить ее вручную, дата внезапно исчезает.

Вы когда-нибудь видели такое поведение?

Ответы [ 5 ]

1 голос
/ 14 февраля 2011

marcos.pont, это хороший взлом, но:

Это не будет работать, если вы хотите где-то использовать двухзначный год.

Это работает, только если вы вводите дату достаточно быстро. В противном случае оно очищает поле после 3-й цифры введенного года (например, вы хотите ввести 2010, а после «201» поле очистится)

Вот лучшее решение, хотя это и хак (два или четыре цифры года работают правильно, но вы не можете ввести трехзначный год (100-999). Поскольку в большинстве случаев нам нужны только 2 или 4 годовой функционал, есть исправление:

В неминифицированной версии найти этот код в функции parseDate:

            case 'y':
                year = getNumber('y');

и добавьте

                if(format.charAt(iFormat) == 'y' && year < 1000)return null;

между этим кодом и перерыв;

В уменьшенной версии: Заменить

case "y":c=m("y");break;

С

case "y":c=m("y");if(a.charAt(z)=='y'&&c<1000)return null;break;
1 голос
/ 23 ноября 2010

Я только что решил эту проблему, добавив завершающий пробел в dateFormat jQuery UI datepicker. Это мешает редактированию сторонней библиотеки. Работал блестяще для меня.

$("#StartDate").datepicker({
  dateFormat: "mm/dd/yy ",
  changeMonth: true,
  changeYear: true,
  showAnim: "fadeIn"
}).mask("99/99/9999");
1 голос
/ 04 июля 2010

Если вы используете частичную маску даты (с двумя цифрами года), у вас не возникнет этой проблемы.

Но с полной маской даты (год из четырех цифр) эта проблема возникает из-за того, что Datepicker анализирует дату с двухзначным годом как действительную дату и вызывает метод ввода focus (), что приводит к тому, что маскированный ввод подтверждает значение против полной маски, определив, что это неполное значение, и очистив его.

Чтобы решить эту проблему, вам нужно вручную изменить код JUI Datepicker.

Если вы используете сокращенную версию JUI, найдите эту подстроку:

иначе, если (c <100) c + = (новая дата) .getFullYear () - (новая дата) .getFullYear ()% 100+ (c <= e? 0: -100); </p>

А затем удалите его из кода.

1 голос
/ 18 мая 2010

Используя Jquery 1.3.1 и UI 1.7.x все в порядке, но если вы используете 1.4.2 и UI 1.8.x, вы попадаете в описанную ошибку.

<html>
<head>
    <title></title>
    <!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js" type="text/javascript"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" type="text/css" rel="Stylesheet" />-->

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7/jquery-ui.min.js" type="text/javascript"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7/themes/base/jquery-ui.css" type="text/css" rel="Stylesheet" />


    <script type="text/javascript" src="http://jquery-joshbush.googlecode.com/files/jquery.maskedinput-1.2.2.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $("#masktest").mask("99/99/9999");
            $("#masktest").datepicker();
        });
    </script>    

</head>
<body>
  <p>Date: <input id="masktest" type="text" value="01/01/2010" /></p>
  <p>Other field: <input id="other1" type="text" value="" /></p>
  <p>Other field 2: <input id="other2" type="text" value="" /></p>
</body>
</html>
0 голосов
/ 13 августа 2010

Дата исчезает, потому что поле ввода теряет фокус при вводе цифр месяц / год. Чтобы предотвратить это, вы можете изменить маркер фокуса в jquery.maskedinput.js:

.bind("focus.mask", function() {
 //add this condition 
 if ($(this).hasClass('hasDatepicker')) {
  return;
 }
 ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...