2013-05-17 4 views
1

У меня есть код ниже.Радиокнопки и флажки javascript

2 переключателя, которые позволяют + пометить свои флажки, если они выбраны, и отключить + отключить их, когда нажата другая кнопка.

Код работает нормально как HTA, но не работает должным образом как HTML. Зная, что окончательное приложение будет HTA, мне нужно беспокоиться о том, что код не работает полностью в HTML?

Большое спасибо.

<table border=1> 
<tr> 
    <td> 
     <form name="phaseform" action=""><font size=2> 
     <input type="radio" name="phase" value="1" id="phase" onclick="checkbox(0)" /> 
      <label for="phase1">Phase 1</label> 
    </td> 
    <td><font size=2> 
     <input type="radio" name="phase" value="2" id="phase" onclick="checkbox(1)" /> 
      <label for="phase2">Phase 2 (after 17 days)</label> 
    </td> 
</tr> 
<tr> 
    <td><font size=2> 
     <input type="checkbox" disabled id="TerminateP1" name="TerminateP1" value="IN">Terminate AD account<br> 
     <input type="checkbox" disabled id="MailboxAccessP1" name="MailboxAccessP1" value="IN">Grant mailbox access to manager<br> 
    </td> 
    <td><font size=2> 
     <input type="checkbox" disabled id="TerminateP2" name="TerminateP2" value="IN">Fully terminate AD account<br> 
     <input type="checkbox" disabled id="DisableMailboxP2" name="DisableMailboxP2" value="IN">Disable mailbox<br> 
    </td> 
</tr> 
</form> 

<script type="text/javascript"> 
function checkbox(val) 
    { 
     document.phaseform.TerminateP1.setAttribute("disabled",1) 
     document.phaseform.MailboxAccessP1.setAttribute("disabled",1) 
     document.phaseform.TerminateP2.setAttribute("disabled",1) 
     document.phaseform.DisableMailboxP2.setAttribute("disabled",1) 
     document.phaseform.TerminateP1.setAttribute("checked",0) 
     document.phaseform.MailboxAccessP1.setAttribute("checked",0) 
     document.phaseform.TerminateP2.setAttribute("checked",0) 
     document.phaseform.DisableMailboxP2.setAttribute("checked",0) 

     if(val) 
     { 
      document.phaseform.TerminateP2.removeAttribute("disabled",val) 
      document.phaseform.DisableMailboxP2.removeAttribute("disabled",val) 
      document.phaseform.TerminateP2.setAttribute("checked",1) 
      document.phaseform.DisableMailboxP2.setAttribute("checked",1) 
      } 
     else 
     { 
      document.phaseform.TerminateP1.removeAttribute("disabled",val) 
      document.phaseform.MailboxAccessP1.removeAttribute("disabled",val) 
      document.phaseform.TerminateP1.setAttribute("checked",1) 
      document.phaseform.MailboxAccessP1.setAttribute("checked",1) 
     } 
    } 
</script> 

ответ

0

Попробуйте

function checkbox(val) { 
    var isone = !!val, istwo = !val; 
    document.phaseform.TerminateP1.disabled = isone; 
    document.phaseform.MailboxAccessP1.disabled = isone; 
    document.phaseform.TerminateP2.disabled = istwo; 
    document.phaseform.DisableMailboxP2.disabled = istwo; 
    document.phaseform.TerminateP1.checked = !isone; 
    document.phaseform.MailboxAccessP1.checked = !isone; 
    document.phaseform.TerminateP2.checked = !istwo; 
    document.phaseform.DisableMailboxP2.checked = !istwo; 
} 

Demo: Fiddle

+0

Спасибо. Короче и делает работу! Однако мне трудно понять это. Не совсем уверен, как эти восклицательные знаки работают там. Еще раз спасибо! – AdrianM

+0

Aha! ..... !! val = false, когда опция переключателя 1 ... и !! val = true, когда переключатель 2 ... удивительный ... Я начинаю любить javascript ... – AdrianM

+1

@ AdrianM работает с использованием правдоподобных и фальшивых значений ... один '!' Будет отрицать истинность/ложность второго, который отрицает отрицание .... т. Е. Когда 'val =' '! Val' выдаст false, потому что' 1' является значение правды и '!! val' даст' true' –

Смежные вопросы