2011-11-29 93 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

完成,对不起,这里有点新的一轮:〜 –