Skip to content

Instantly share code, notes, and snippets.

@uhtred
Created October 31, 2014 21:49
Show Gist options
  • Save uhtred/29435321b0ce7a980c68 to your computer and use it in GitHub Desktop.
Save uhtred/29435321b0ce7a980c68 to your computer and use it in GitHub Desktop.
JS: jQuery Validate Method Only One
$.validator.addMethod('onlyOne', function(value, element, params) {
var _this = this,
$element = $(element),
siblingsSelector = params[1],
scopeSelector = params[2],
repeated = false,
$repeat,
$elements = $element.closest(scopeSelector).find(siblingsSelector).not(element),
$elementsFirst = $elements.eq(0),
validator = $elementsFirst.data('validate_only_one') ? $elementsFirst.data('validate_only_one') : $.extend({}, this);
$elementsFirst.data('validate_only_one', validator);
$repeat = $elements.filter(function() {
return value === $(this).val();
});
if (!$element.data('being_validated')) {
$elements.data('being_validated', true);
$elements.each(function() {
validator.element(this);
});
$elements.data('being_validated', false);
}
return this.optional(element) || !$repeat.length;
}, '{0}');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment