diff --git a/example/index.html b/example/index.html
index 9047b7e..5da1075 100644
--- a/example/index.html
+++ b/example/index.html
@@ -16,6 +16,9 @@
zipCode: function(zip) {
var re = /^\d{5}(-?\d{4})?$/;
return re.test(zip) ? true : "Invalid zip code (ex. 12345 or 12345-1234)";
+ },
+ oneChecked: function(check) {
+ return $(this).closest('form').find('input[name="'+$(this).attr('name')+'"]:checked').length === 1;
}
}
};
@@ -35,6 +38,10 @@
margin-bottom: 16px;
}
+ input[type="radio"] {
+ display: inline;
+ }
+
ol {
list-style-type: none;
}
@@ -72,6 +79,11 @@
+
+
+ Home
+ Work
+
diff --git a/tinyvalidation.js b/tinyvalidation.js
index 63ad28a..40e66c5 100644
--- a/tinyvalidation.js
+++ b/tinyvalidation.js
@@ -80,10 +80,23 @@
}
}
};
+ var validateAllFieldsWithName = function (e) {
+ var $radios = $form.find('input[name="'+$(this).attr('name')+'"]');
+ $radios.each(function () {
+ if (!$(this).data('validate')) return;
+ $(this).trigger({
+ type: "tv-radioPropagate"
+ });
+ });
+ };
if (options.validateOnBlur) $(this).blur(validateField);
if (options.validateOnKeyUp) $(this).keyup(validateField);
if ($(this).is(':checkbox')) $(this).change(validateField);
+ if ($(this).is(':radio')) {
+ $(this).change(validateAllFieldsWithName);
+ $(this).bind('tv-radioPropagate', validateField);
+ }
if (options.disableSubmit) {
$(this).bind('input', validateField);
$(this).trigger('input');