2013-07-23 28 views
0

我有很多複選框,需要執行相同的JavaScript函數時,選中/未選中。作爲參數I附上控件的服務器ID。我的希望是使用這個ID得到實際的複選框。問題是我需要找到客戶端ID,但正如我所料,我無法在asp代碼塊中使用我的JavaScript變量myControlsServerID來獲取此ID。這是我卡住的地方:JavaScript變量在ASP塊代碼

function show(myControlsServerID) { 
    var checkbox = document.getElementById('<%= myControlsServerID.ClientID %>') 
    //more omitted code 
} 

如何獲得點擊複選框?

回答

1

使用jQuery來實現這一點。

在文檔加載時初始化jQuery來監聽頁面上的所有複選框。那一刻,你點擊其中一個,你可以做任何你想做的事情:

$(document).ready(function() { 
    $("input:checkbox").click(function(e) { 
     alert($(this).attr('id')); 
    }); 
}); 

下載最新的jQuery版本上http://jquery.com/download/

+0

很好的解決方案!我甚至不必將該函數添加到所有複選框:)我唯一還沒有想到的是如何獲得「已檢查」狀態。它返回「未定義」,而「類型」和「ID」顯示預期的數據。將繼續調查。謝謝! – Nurp

+0

嘗試$(this).is(「:checked」) - 這將返回true或false –

+0

完美地工作! – Nurp

1
chk.attributes.add("onclick","show('" + chk.ClientID + "')"); 


function show(myControlsServerID) { 
    var checkbox = document.getElementById(myControlsServerID); 
} 
+0

這樣做需要很多額外的代碼,因爲我必須將此屬性添加到每個複選框,並且我有許多這樣的代碼。但下一次,當我只有其中幾個,這將是我的解決方案:) – Nurp

1

你可以這樣做:用onchange="show(this);"

沒有必要做這些<%= myControlsServerID.ClientID %>的東西,只需撥打show()在你的<asp:checkbox onchange='show(this);'>,它會自動給你那個點擊/選中的元素,或者我們可以說複選框。

<input type="checkbox" value="chk1" id="chk001" onchange="show(this);"/> 
<input type="checkbox" value="chk2" id="chk002" onchange="show(this);"/> 
<input type="checkbox" value="chk3" id="chk003" onchange="show(this);"/> 
<input type="checkbox" value="chk4" id="chk004" onchange="show(this);"/> 

的Javascript

function show(element) { 
    var checkbox = element.id; 
    alert("You have clicked " + checkbox); 
    //more omitted code 
} 

Fiddle Demo

+0

我喜歡這個解決方案,但你的小提琴演示只顯示瞭如何與輸入控件的工作。我注意到一個asp:複選框呈現爲包含複選框的span標記。因此,解決方案中的「元素」實際上是一個跨度,無論如何我都無法訪問複選框。 – Nurp