Радиовход и оповещение в Javascript - PullRequest
0 голосов
/ 05 мая 2011

Мне нужна помощь.У меня есть программа, которая изменяет значения таблицы на основе пользовательского ввода в окне радио, как на этой странице:

clicky

Но проблема в том, что я хочу, чтобы пользователи выбирали вход радиотолько однажды;если они выбирают другое радио, то значения таблиц портятся.Итак, я хочу знать, как я могу создать окно оповещения, когда пользователь выбирает радиовход дважды?

Аналогично этому сайту clicky попробуйте дважды щелкнуть переключатель и всплывающее окно с предупреждением.

Пожалуйста, кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Трудно предотвратить событие на узле ввода переключателя, не прибегая к помощи извне библиотек. Простое решение состоит в том, чтобы просто отключить кнопки внутри функции щелчка, прикрепленной к каждому входному узлу. Вот так: http://jsfiddle.net/c73Mh/. Если они по-прежнему должны иметь возможность выбирать переключатели по какой-либо причине, вы можете отменить выбор, выбрав кнопку, которая была первоначально выбрана из той же функции. Надеюсь, это поможет!

0 голосов
/ 05 мая 2011

Для простоты в моем примере я предполагаю, что идентификатор каждого переключателя является комбинацией атрибутов name и value.В дополнение к тому, что я вам дал ниже, вам нужно будет добавить функцию reset (), которая устанавливает selectedValues = {}; и отменяет выбор всех переключателей.

<input type="radio" name="group1" value="A" id="group1A" onclick="radioClicked(this);" />First option
<input type="radio" name="group1" value="B" id="group1B" onclick="radioClicked(this);" />Second option

<input type="radio" name="group2" value="A" id="group2A" onclick="radioClicked(this);" />First option
<input type="radio" name="group2" value="B" id="group2B" onclick="radioClicked(this);" />Second option

var selectedValues = {};

function radioClicked(rb) {
  if (selectedValues[rb.name] === undefined) {
    selectedValues[rb.name] = rb.value;
    doTableProcessing();
  }
  else {
    alert("You can't change the selected values");
    document.getElementById(rb.name + selectedValues[rb.name]).checked = true;
  }
}
...