我已經得到了我們設置瞭如下複選框:ASP:複選框如何僅在檢查時自動回覆?
<asp:CheckBox ID="myCheckbox" runat="Server" OnClick="showLoadingScreen(this.checked);" AutoPostBack="true" Text="Check me for more data!" />
功能showLoadingScreen是如下:
function showLoadingScreen(isChecked) {
if (isChecked)
{
document.getElementById('form1').style.display='none';
document.getElementById('img_loading').style.display='block';
}
else { return false; }
}
我已經添加了else子句,希望我能得到它只有在複選框被選中時才發回,但是無論發生哪種情況,都會發回。
我在頁面上有一個網格(內部form1),有一組數據加載到它的頁面加載,但爲了添加一些額外的數據,我已經添加了這個複選框(它更長正在運行的進程,所以我只想按需加載,而不是預先)。當它被選中時,我想顯示加載gif,回發,獲取數據並返回。如果該框未被選中,我不想做任何事情,因爲在頁面上留下足夠多的數據是完全正確的(也就是說,預先顯示的數據是複選框被選中時顯示的數據的子集)。
有什麼辦法可以讓複選框自動回覆選中狀態,但不會取消選中?
編輯:使用暗隼的建議,我已經修改了複選框的樣子:
<asp:CheckBox ID="myCheckbox" runat="Server" OnClick="return showLoadingScreen(this.checked);" AutoPostBack="true" Text="Include HQ Values" />
和JavaScript是:
function showLoadingScreen(checked) {
alert(checked);
if (checked)
{
document.getElementById('form1').style.display='none';
document.getElementById('img_loading').style.display='block';
document.form1.submit(); //my own addition, to get it to post back
}
else { return false; }
}
現在,回發上選中,但箱子不能再被檢查了。正如你所看到的,我已經添加了一個警報來顯示傳入的值。當你取消選中該框(false)時,它會傳遞正確的值,但是它會以某種方式再次被檢查。
這不是一個很大的問題,因爲真的沒有理由不選中該框(因爲正如我之前所述,檢查時的數據集是未檢查的數據集的超集),但我仍然想知道爲什麼它是這樣做。有任何想法嗎?
不要緊,你的代碼是什麼樣子的VS設計師。您需要查看瀏覽器中的標記以確定如何解決問題。 – 2010-01-07 17:24:10
喬希,請參閱我的編輯。我接受了你的建議,在瀏覽器中查看源代碼,它會像這樣回來: 你可以看到不知何故checked =「checked」被添加,我覺得它是如何仍然檢查,儘管JavaScript返回false。任何想法如何讓它不添加檢查=「檢查」部分? – 2010-01-07 18:57:40
我寧願建議:取消選中複選框並進行回調,但不提供任何控制。這可以確保您沒有不一致的服務器/客戶端控制狀態。 – citronas 2010-01-07 18:58:17