2013-11-26 185 views
0

我cannoot弄清楚這個看似簡單的問題。我在JSP頁面中有一個複選框和一個與它關聯的onclick。當我點擊複選框時,我需要檢查此onclick函數內部是否已選中或未選中,以瞭解要採取的操作。但是,它始終被檢查!我不知道爲什麼。它幾乎就像點擊動作完成並在它進入此功能之前將其標記爲已檢查。但是,如果我做了一個簡單的HTML示例頁面,它工作得很好,併爲.checked返回正確的值。 我試圖消除「本」,只是調用由ID複選框從的onclick具有相同的結果 下面是設置:checkbox.checked總是返回true onclick函數內

<label><input type="checkbox" onclick="selectEntireRange(this);"/> Select ALL Ranges</label> 

這裏是JS:

function selectEntireRange(checkElement) 
{ 
    // if checked - remove check and display table rows normally 
    if(checkElement.checked) 
    { 
    //ALWAYS EXECUTES HERE! 
    checkElement.checked = false; 
    greyoutAllTableRows(false); 
    } 
    // if unchecked - mark 'checked' and grey out all table rows 
    else 
    { 
    checkElement.checked = true; 
    setAllCheckBoxes(false); 
    var selectedRangeField = document.getElementById('effRange'); 
    selectedRangeField.value = ''; 
    greyoutAllTableRows(true); 
    } 
} 

任何幫助將是真棒!謝謝!

P.S.我無法使用jQuery!

+1

你嘗試了'onchange'事件,而不是 – adeneo

+0

你好,是的,但與IE平變化,只有當複選框失去焦點,這不是我想要什麼觸發。 –

+0

嘗試在這篇文章中的第一個答案,我認爲這將有所幫助。 http://stackoverflow.com/questions/10459021/how-to-apply-checkbox-with-functions-in-javascript – Susie

回答

0

如何

onclick="selectEntireRange(this.checked)" 

然後更改功能要問,如果它真或假或0或1或什麼都默認勾選值。不確定。

+0

聰明的做法!不幸的是,總是檢查以及:( –

0

問題就出現了,因爲你的checkElement.checked = false;中的if/else塊的設置。評論\刪除該行,它將工作。由於點擊後您將其設置爲false,複選框不會進入檢查狀態,每次用戶點擊它時,都會因爲checkElement.checked = false;行而被取消選中。

+0

但它是不正確地報告「檢查」的狀態甚至在該行之前。反正,我剛剛運行它再次刪除了該行...仍然錯誤。感謝您的建議! –

+0

讓我知道瀏覽器和版本,如果你沒有找到它在[jsfiddle](http://jsfiddle.net/nkanand4/RN68K/)上工作。 –