Browse Source

Compatible with using periods and commas as decimal points and thousand separators.

pull/23099/head
maliming 1 year ago
parent
commit
f6c4f082c3
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 1
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryValidation/JQueryValidationScriptContributor.cs
  2. 4
      npm/packs/jquery-validation/abp.resourcemapping.js
  3. 27
      npm/packs/jquery-validation/src/abp.jquery.validate.js

1
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryValidation/JQueryValidationScriptContributor.cs

@ -15,6 +15,7 @@ public class JQueryValidationScriptContributor : BundleContributor
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/jquery-validation/jquery.validate.js");
context.Files.AddIfNotContains("/libs/jquery-validation/abp.jquery.validate.js");
}
public override void ConfigureDynamicResources(BundleConfigurationContext context)

4
npm/packs/jquery-validation/abp.resourcemapping.js

@ -1,6 +1,8 @@
module.exports = {
mappings: {
"@node_modules/jquery-validation/dist/jquery.validate.js": "@libs/jquery-validation/",
"@node_modules/jquery-validation/dist/localization/*.*": "@libs/jquery-validation/localization/"
"@node_modules/jquery-validation/dist/localization/*.*": "@libs/jquery-validation/localization/",
"@node_modules/@abp/jquery-validation/src/*.*": "@libs/jquery-validation/"
}
}

27
npm/packs/jquery-validation/src/abp.jquery.validate.js

@ -0,0 +1,27 @@
$.validator.methods.range = function (value, element, param) {
if (this.optional(element)) {
return true;
}
// Remove thousands separators and convert decimal separators
var cleanValue = value.replace(/[.,](?=.*[.,])/g, '').replace(/[.,](?!.*[.,])/g, '.');
var numericValue = parseFloat(cleanValue);
// Check if conversion was successful and value is within range
return !isNaN(numericValue) && (numericValue >= param[0] && numericValue <= param[1]);
};
$.validator.methods.number = function (value, element) {
if (this.optional(element)) {
return true;
}
// 1. Period as decimal separator, comma as thousands separator (e.g., 1,234.56 or -1,234.56)
// 2. Comma as decimal separator, period as thousands separator (e.g., 1.234,56 or -1.234,56)
// 3. Pure numbers (integers)
var pattern1 = /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:-?\.\d+)?$/;
var pattern2 = /^(?:-?\d+|-?\d{1,3}(?:\.\d{3})+)?(?:-?,\d+)?$/;
var pattern3 = /^-?\d+$/;
return pattern1.test(value) || pattern2.test(value) || pattern3.test(value);
}
Loading…
Cancel
Save