ラジオ ボタンの選択を解除できるスクリプトを探していました。SOで見つけて、ここに実装しました...
http://jsfiddle.net/sparky672/YFsVK/1/
ご覧のとおり、うまく機能していますが、ラジオ ボタン自体をクリックした場合のみです。<label>
(対応するテキストをクリックして、ボタンを「選択」することもできます。デフォルトでは、このように<label>
動作します。)
ただし、対応する をクリックするだけでラジオ ボタンを「選択解除」できるようにする必要もあり、<label>
ここで助けが必要です。
(なぜですか?私は<label>
、デフォルトのラジオボタンを覆う に含まれる画像スプライトを使用して、ラジオボタンの外観をグラフィカルに変更するプラグインを使用しているためです。プラグインの動作を確認するためにアクティブにできる行が jsFiddle 内にあります。 .)
このスクリプトを少し調整する必要があるだけだと確信していますが、正しく取得できないようです。<label>
対応するラジオボタンを操作しながら「選択」するだけでよいと思います。は、ボタンの を対応する の属性に<label>
配置することによって、ボタンに「添付」されます。id
for
<label>
JavaScript:
$(document).ready(function() {
$('input[name="amount"]').mousedown(function(e) { // allows radio button deselection
var $self = $(this);
if ($self.is(':checked')) {
var uncheck = function() {
setTimeout(function() {
$self.removeAttr('checked');
}, 0);
};
var unbind = function() {
$self.unbind('mouseup', up);
};
var up = function() {
uncheck();
unbind();
};
$self.bind('mouseup', up);
$self.one('mouseout', unbind);
}
});
});
HTML:
<fieldset id="radioset">
<input type="radio" id="radio-1" name="amount" value="Option 1" /><label for="radio-1" title="">Option 1</label><br />
<input type="radio" id="radio-2" name="amount" value="Option 2" /><label for="radio-2" title="">Option 2</label><br />
<input type="radio" id="radio-3" name="amount" value="Option 3" /><label for="radio-3" title="">Option 3</label><br />
<input type="radio" id="radio-4" name="amount" value="Option 4" /><label for="radio-4" title="">Option 4</label><br />
<input type="radio" id="radio-5" name="amount" value="Option 5" /><label for="radio-5" title="">Option 5</label>
</fieldset>