{"id":36924275,"url":"https://github.com/MvcControlsToolkit/Unobtrusive.Extensions","last_synced_at":"2026-01-28T10:01:05.151Z","repository":{"id":57282478,"uuid":"57225727","full_name":"MvcControlsToolkit/Unobtrusive.Extensions","owner":"MvcControlsToolkit","description":"Add-on to jQuery Unobtrusive Validation to enable globalization and dynamic content parsing","archived":false,"fork":false,"pushed_at":"2017-05-25T09:47:25.000Z","size":66,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-13T20:29:17.408Z","etag":null,"topics":["form-validation","globalization","jquery-validation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MvcControlsToolkit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-27T15:45:43.000Z","updated_at":"2019-05-26T08:56:59.000Z","dependencies_parsed_at":"2022-09-18T19:26:03.038Z","dependency_job_id":null,"html_url":"https://github.com/MvcControlsToolkit/Unobtrusive.Extensions","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/MvcControlsToolkit/Unobtrusive.Extensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MvcControlsToolkit%2FUnobtrusive.Extensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MvcControlsToolkit%2FUnobtrusive.Extensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MvcControlsToolkit%2FUnobtrusive.Extensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MvcControlsToolkit%2FUnobtrusive.Extensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MvcControlsToolkit","download_url":"https://codeload.github.com/MvcControlsToolkit/Unobtrusive.Extensions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MvcControlsToolkit%2FUnobtrusive.Extensions/sbom","scorecard":{"id":97530,"data":{"date":"2025-08-11","repo":{"name":"github.com/MvcControlsToolkit/Unobtrusive.Extensions","commit":"b521c15b197448e77ba3276cfd41774a5f66f981"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-15T09:23:22.875Z","repository_id":57282478,"created_at":"2025-08-15T09:23:22.875Z","updated_at":"2025-08-15T09:23:22.875Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28844011,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T07:39:25.367Z","status":"ssl_error","status_checked_at":"2026-01-28T07:39:24.487Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["form-validation","globalization","jquery-validation"],"created_at":"2026-01-12T19:00:25.492Z","updated_at":"2026-01-28T10:01:05.145Z","avatar_url":"https://github.com/MvcControlsToolkit.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# jQuery.Validate unobtrusive extensions\nExetnsions to the [jquery.validate.unobtrusive library](https://github.com/aspnet/jquery-validation-unobtrusive) that prvides:\n1. Globalization support to both format verification, min, max, and range validation rules\n2. range, min, max are enhanced to work aith all inputs(number, date, time, datetime, weak, month).\n3. Enhancement of inputs with validation rules is applied easily to dynamically generated Html\n4. Format validation of positive integers, integers, floats, dates, datetimes, time, weeks, months, and colours.\n5. Dynamic range validation where the validated input value (number, date, time, datetime, weak, month) must fall inside\na list of inputs defining minimum values and a list of inputs defining maximum values.\n\nPoints 1 and 2 relies on the [mvcct.enhancer](https://github.com/MvcControlsToolkit/mvcct-enhancer) library and on the \n[Globalize](https://github.com/jquery/globalize) library. So please refers to the [mvcct.enhancer](https://github.com/MvcControlsToolkit/mvcct-enhancer) \ndocumentation about how to apply validation also to dynamic Html. Please notice also that both the Globalize library and the mvcct.enhancer.basic.input optional module\nmust be loaded and registred for this library to work properly.\n\nThis module has been designed to work with Asp.net core Mvc and with the [Mvc Controls Tollkit Core version](https://github.com/MvcControlsToolkit/MvcControlsToolkit.Core) that \nfill autoamtically all validation data- attributes based on .Net property validation attributes. \nHowever, it can be used with any server technology if all needed data- attributes are somehow inserted \nin the input fields.\n\n**jquery-validation-unobtrusive-extensions is available both on bower and npm** \n\n## Validation rules\n\nAll rules work both with Html5 inputs whose value format is international ISO, and falled back inputs \nworking with current locale formats. The mvcct.enhancer fallback module takes care of not supported input \nfallback.\n\n### Range extension\nIn order to have range, min, max support globalization and work with all types new validation rules have been defined,\nnamely: `rangeE`, `minE`, `maxE`.\nParameters names are: `min`, `max`. Thus accordingly, associated attributes are `data-rangeE-min`, `data-minE-min`, etc.\n`min`, `max` must contain data in international iso format.\n\n### Dynamic range\nRule name is: rdranger.\nParameters names are: `dmins`, `dminds`, `dmaxs`, and `dmaxds`, `go`. Thus, accordingly, associated attributes are `data-drange-dmins`, `data-drange-dmaxs`, etc.\n\n`dmins`, and `dmax` are the space separated lists of the input names that define all minimum and maximum \nconstraints(`\"minInput1 minInput2\",..`).\n\n`dminds` and `dmaxd`s are the space separated lists of all margins between mins and maxs and the controlled value.\nFor instance if `dminds=\"2 4\"`, then the controlled value must have a distance of `2` from `minInput1`, and of `4` from `minInput2`.\nAll dates/times related delays are expressed in milliseconds, and all numbers are expressed in international ISO format.\n\n`go` is a parameter that if set to `true`(ie `data-drange-go='true'`), instead of causing a validation error\nlet the controlled value be change to remain in the allowed range. This feature exploits the mvcct.enhancer dependency propagation module.\n\n### Correct type format rule.\nRule name is: `correcttype`\nUnique parameter name is: `type`. Thus, associated attribute is `data-correcttype-type`.\n\n`type` contains a number between `0` and `8` that encodes the type:\n0 free format, 1 positive integer, 2 integer, 3 float, 4 time, 5 date, 6 datetime, 7 week, 8 month.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMvcControlsToolkit%2FUnobtrusive.Extensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMvcControlsToolkit%2FUnobtrusive.Extensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMvcControlsToolkit%2FUnobtrusive.Extensions/lists"}