2011-11-29 117 views
5

從我所能看到的所有可以在這裏找到的東西可以看出,這似乎不可能,但我只是想我會問。獲取複選框的當前值onclick

我想要做的是防止複選框執行默認的切換操作並運行函數。這個函數需要知道CURRENT狀態的複選框 - 而不是它在click事件觸發它之後將會處於的狀態 - 並且需要防止該切換。

所以說我有這個輸入例如

<input type="checkbox" onclick="setDefault(this);return false;" /> 

而且setdefault功能是這樣的

function setDefault(el) { 
    if(jQuery(el).is(':checked')) 
     { 
     alert('Turning current default off- setting default to Home settings'); 
     jQuery(el).prop('checked',false); 
     return; 
     } 
    else 
     { 
     alert('setting a new default'); 
     jQuery(el).prop('checked',false); 
     return; 
     } 
} 

當運行它得到的複選框已改爲狀態,whreas什​​麼我需要做的是防止地位發生變化,找出其現狀,然後決定做什麼。

我已經嘗試了preventDefault()的每個組合,並返回false我可以想到在函數和onclick事件,並嘗試使用onchange事件等等,但似乎沒有任何東西似乎允許我調用一個函數,當單擊複選框時,允許該功能在點擊事件更改之前獲取複選框的當前值。

也許我只需要重新考慮這一點,但如果有什麼明顯我已經錯過了,我會非常感激

回答

2

由於變化已經發生,複選框的狀態是它是什麼現在相反。這解決了你的第一個問題。

要重置狀態,只需將複選框的值checked設置爲現在不在的值,這就是之前的情況。

(我的這聽起來像是瘋帽匠會說的!)

+0

對,好!當然是瘋帽匠!所以我已經添加到我的函數的開始 - jQuery(el).is(':checked')? jQuery(el).prop('checked',false):jQuery(el).prop('checked',true); - 這似乎是個訣竅;) –

+0

很高興爲您提供幫助。此外,僅供參考,如果您找到有用的答案或問題,或者您認爲答案會增加有用的信息,您也可以進行投票以表明您的支持。 – cdeszaq

+0

完成,對不起,這裏有點新的一輪:〜 –