Показать сообщение отдельно
  #7 (permalink)  
Старый 05.04.2012, 14:46
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

nikki4, вообще я зря этот код сделал классом. Лучше вот так:
function uncheckAnother(e) {
  var target, x, radios;
  e = e || window.event;
  target = e.target || e.srcElement;

  if (target.type !== "radio") return false;

  radios = document.querySelectorAll(this.getAttribute("data-classes"));

  for(x = 0; x < radios.length; x++) {
    radios[x].checked = false;
  }
}
function makeRadioFamily() {
  var 
    x, queryString, y,
    fieldsets = document.querySelectorAll("." + Array.prototype.join.call(arguments, ", ."))
  ;

  for(x = 0; x < fieldsets.length; x++) {
    queryString = "";
    for(y = 0; y < arguments.length; y++) {
      if(fieldsets[x].className === arguments[y]) continue;
      if(queryString.indexOf(arguments[y]) != -1) continue;
      queryString += " ." + arguments[y] + " input[type=radio], "
    }
    queryString = queryString.replace(/, $/, "");
    fieldsets[x].setAttribute("data-classes", queryString);
    fieldsets[x].onclick = uncheckAnother;
  }  
}

Использовать так:
makeRadioFamily("oneGroup", "twoGroup");
makeRadioFamily("threeGroup", "fourGroup");
//и т.д.
Пример.

Последний раз редактировалось GuardCat, 05.04.2012 в 14:51.
Ответить с цитированием