check for duplicate radio button values
HTML
<input type="radio" name="n1" value="1">
<input type="radio" name="n1" value="2">
<input type="radio" name="n1" value="2">
<input type="radio" name="n2" value="2">
JavaScript
//simple version:
/*
(function() {
var duplicates = {},
size = 0;
$('input:radio').each(function() {
var $t = $(this),
n = $t.attr('name'),
v = this.value,
$obj = $('input:radio[name=' + n + '][value=' + v + ']');
if ($obj.length != 1 && !duplicates[n]) {
console.warn('Found ' + $obj.length + ' duplicate values for name=' + n);
duplicates[n] = $obj;
size++;
}
});
if (size) {
console.error('You have ' + size + ' radio buttons with duplicate values');
console.log(duplicates);
} else {
console.log('Ok: no duplicate radio button values');
}
})();
*/
//nicer version
(function(c) {
if (!$ || !$.fn || !$.fn.jquery) alert('jquery not found!');
else {
var d = {},
s = 0,
e = $('<div style="position:fixed;top:0;left:50%;width:240px;margin-left:-120px;padding:5px;z-index:10001;display:none">').appendTo('body'),
m, k;
$('input:radio').each(function() {
var $t = $(this),
n = $t.attr('name'),
v = this.value,
$obj = $('input:radio[name=' + n + '][value=' + v + ']');
if ($obj.length != 1 && !d[n]) {
c.warn('Found ' + $obj.length + ' duplicate values for name=' + n);
d[n] = $obj;
s++;
}
});
if (s) {
k = '#f99';
c.error(m = 'You have ' + s + ' radio buttons with duplicate values');
c.log(d)
} else {
k = '#9f9';
c.log(m = 'Ok: no duplicate radio button values')
}
e.html(m).css('backgroundColor', k).show();
window.setTimeout(function() {
e.fadeOut('slow', function() {
e.remove()
})
}, 3000)
}
})(console);