JQuery проверить десятичный разделитель и Asp.net MVC - PullRequest
8 голосов
/ 18 января 2010

Новая проверка ввода Asp.net mvc 2.0 работает как шарм, за исключением десятичных разделителей, когда дело доходит до jquery.validate. Когда я использую Microsoft MVC ajax libs, он работает нормально. Запятая - это сторона сервера десятичного разделителя, а также сторона клиента.

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript" ></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript" ></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>

Когда я использую это (jquery загружается в главном представлении), я должен использовать точку на стороне клиента. Но тогда модель становится недопустимой и возвращается к представлению, создавая интересный цикл.

<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJqueryValidation.js" type="text/javascript"></script>

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

Ответы [ 4 ]

2 голосов
/ 18 января 2010

Аааа ... Радости глобализации!

При работе с числом (а я даже не начну с дат) необходимость в определении правильного десятичного разделителя может быть пугающей. Однако существует простой способ определить десятичный разделитель для любого клиента:

function GetDecimalSeparator()
{
  return  (1 / 10).ToString().substring(1, 1);
}

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

1 голос
/ 30 сентября 2010

Возможно, вы найдете ответ в extra-method.js . Вы найдете пример локализации даты: выполните поиск <input name="pippo" class="{dateITA:true}" /> и jQuery.validator.addMethod("dateITA",, которые следуют. Вы можете сделать то же самое, чтобы добавить и использовать свою собственную проверку чисел (соответствует локали, которую вы используете).

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

Одним из решений является исправление jquery validate, хотя вам не следует редактировать файл напрямую, как предположил Петр, поскольку эти изменения будут перезаписаны, если вы будете обновляться в будущем. Вот лучшее решение: http://rebuildall.umbraworks.net/2011/03/02/jQuery_validate_and_the_comma_decimal_separator

В качестве быстрого исправления вы можете отключить проверку клиента, локально или глобально, как описано здесь: http://www.campusmvp.net/asp-net-mvc-3-and-the-coma-in-decimals/

0 голосов
/ 22 февраля 2011

Вы можете добавить запятую к регулярному выражению рядом с dot в файле jquery.validate.min.js или jquery.validate.js. В следующем примере это пометка жирным шрифтом. (\. -> [\.,])

number: function(value, element) {
            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:**[\\.,]**\d+)?$/.test(value);
        },

Будьте осторожны, в этом оригинальном выражении принимайте число с разделителем тысяч (,). Будет лучше, используйте RE без разделителя тысяч, если хотите использовать запятую десятичный разделитель.

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