2009-08-03 19 views
0

非常抱歉基本問題 - JavaScript中的速成教程即將到來!但在此之前,我有一個JavaScript功能:在發佈表單之後有條件地設置javascript函數

function toggle(request) 

該功能只是切換div可見/不可見。我可以使用如下的的onclick事件從這個函數觸發我想要的行爲:

<input type="radio" name="complete" value="true" id="complete_yes" 
onclick="toggle('true');"/> 

這工作得很好,但提交表單後,在某些情況下我想的單選按鈕被自動選中, javascript函數自動設置爲:

toggle('true') 

...因此揭示div內容。我有「檢查」部分工作,但我如何獲得JavaScript函數有條件地設置爲真?

<input type="radio" name="complete" value="true" {if $data.complete == true}checked{/if} id="complete_yes" 
onclick="toggle('true');"/> 
+0

回想一下,我認爲這裏唯一的'div'就是我! – cw84 2009-08-03 21:08:40

回答

2

決定學習jQuery的,而不是!下面的語法達到了預期的效果,並且非常易於維護!

$(document).ready(function() { 
$('#complete_yes').toggle(function() { 
    $('#repair_complete').removeClass('hidden'); 
}, function() { 
    $('#repair_complete').addClass('hidden'); 
}); 
}); 
1

什麼測試,在你的JS toggle功能,如果在div要作出可見或不依賴於「選中」您輸入的狀態?

東西有點像這樣,我想:

function toggle() 
{ 
    if (document.getElementById('YOUR_INPUT_ID').checked) { 
     document.getElementById('YOUR_DIV_ID').style.display = 'block'; 
    } else { 
     document.getElementById('YOUR_DIV_ID').style.display = 'none'; 
    } 
} 

是絕對沒有測試過,但我想你會明白我的意思:-)
(我從來不知道,如果輸入視爲「檢查」之前或之後的onclick上的JS函數調用...所以你實際上可能反轉‘block’和‘none’設置)

而且,如果你有多個輸入/ div的,你可以通過他們的ID作爲的參數函數...

這樣,你永遠不必擔心該函數的任何「初始化」。


請注意,您還可以測試,如果DIV是可見的,像這樣的東西:

function toggle() 
{ 
    if (document.getElementById('YOUR_DIV_ID').style.display == 'none') { 
     document.getElementById('YOUR_DIV_ID').style.display = 'block'; 
    } else { 
     document.getElementById('YOUR_DIV_ID').style.display = 'none'; 
    } 
} 

(也未測試)

這樣一來,你的函數真的會切換 div的顯示,每次調用。

+0

謝謝 - 聽起來很有希望,明天會測試! – cw84 2009-08-03 21:38:46

0

爲什麼不這樣做:

{if $data.complete == true} 
<script type="text/javascript">toggle('true');</script> 
{/if}