2013-04-23 3 views
3

Я пытался выяснить решение проблемы в течение нескольких часов. Я до сих пор довольно новичок в Javascript, поэтому, пожалуйста, простите меня, если я буду казаться глупым. К сожалению, я не знаю jQuery, и я начинаю думать, что это мешает мне придумать решение.Включение и отключение флажков с помощью javascript

Что я пытаюсь сделать, это установить флажок, который позволяет отключать переключатели. Если это имеет смысл.

Пример:

  • Выбор 1
  • югу выбор
  • югу выбор
  • югу выбор

Я хотел бы быть в состоянии нажать на первый флажок (выбор 1), чтобы включить суб-выбор. Если он не щелкнут, выбор должен быть отключен. :-)

Вот что у меня до сих пор:

<script> 
function enableRadios(x) { 
    var formElement = eval("checkbox" + x) 
    if (formElement[0].disabled) { 
     formElement[0].disabled = false 
     formElement[1].disabled = false 
    } else { 
     formElement[0].disabled = true 
     formElement[1].disabled = true 
    } 
}</script> 

<body><input type="checkbox" name="main" value="main" onClick="enableRadios(x)"> 
<input disabled type="radio" value="1" name="x"> 
<input disabled type="radio" value="2" name="x"> 
<input disabled type="radio" value="3" name="x"> 
<input disabled type="radio" value="4" name="x"> 
<input disabled type="radio" value="5" name="x"> 
<input disabled type="radio" value="6" name="x"></body> 

Я очень ценю вашу помощь!

+0

Привет, большой вопрос, Javascript не моя вещь, так что все, что я могу сделать обратитесь к этому аналогичному вопросу, который, возможно, вы могли бы наследовать в своей работе? Мое предположение было бы эта часть неправильной, но опять-таки я не использую javascript, «if (formElement [0] .disabled) { formElement [0] .disabled = false formElement [1] .disabled = false } else { formElement [0] = .disabled верно formElement [1] .disabled = истина }» http://stackoverflow.com/questions/5215048/javascript-checkbox-enable-disable –

ответ

2

Вам нужно передать строку, содержащую имя 'x' радио, не передать переменную x:

<script> 
function toggleRadios(name) { 
    var elems = document.getElementsByName(name); 
    for(i=0; i<elems.length; i++) { 
     elems[i].disabled = !elems[i].disabled; 
    } 
} 
</script> 

<input type="checkbox" name="main" value="main" onclick="toggleRadios('x')"> 
<input disabled type="radio" value="1" name="x"> 
<input disabled type="radio" value="2" name="x"> 
<input disabled type="radio" value="3" name="x"> 
<input disabled type="radio" value="4" name="x"> 
<input disabled type="radio" value="5" name="x"> 
<input disabled type="radio" value="6" name="x"> 

http://jsfiddle.net/samliew/B6tF7/

+0

Вы удивительны! Спасибо огромное! –

+0

+1: лучше передать 'this.checked' в качестве аргумента в функции' toggleRadios' и включить или отключить на основе этого значения. – naveen

+0

В этом случае разница в производительности незначительна, так как мы инвертируем логическое значение. –