2012-02-28 12 views
4
<input type="radio" name="things" value="exam" /> exam 
<input type="radio" name="things" value="journey" /> journey 


$("input[name=things]").click(function(){ 
    if($(this).is(':checked')){ 
     $(this).removeAttr('checked') 
    } 
}) 

これは問題ありません。どうすれば作れますか?私は好きです - もし私が選択した入力をクリックするとこれはunselectですが、私がunselectの入力をクリックすると、これはチェックし、他の入力をチェックしないでください。ラジオボタンのチェックを外す

LIVE:http://jsfiddle.net/syH46/

+0

http://stackoverflow.com/a/6246260/55209およびhttp://stackoverflow.com/questions/2589052/how-to-uncheck-a-radio-button –

+0

[チェック/チェックを解除する方法ラジオボタンをクリックしますか?](http://stackoverflow.com/questions/4957207/how-to-check-uncheck-radio-button-on-click) –

+0

こんにちは、あなたはテキスト試験や旅をクリックすると言っている対応する入力を選択するか、選択を解除する必要がありますか? – Kosmosniks

答えて

2

私は、このコードが出ている:

var prev = {}; 
$("input[name=things]").click(function(){ 
    if (prev && prev.value == this.value) { 
     $(this).prop('checked', !prev.status); 
    } 
    prev = { 
     value: this.value, 
     status: this.checked 
    }; 
}); 

は、残念ながら、私は、クリックイベントが発生したときcheckedプロパティは常に真であるので、checkedプロパティを保存するために追加の変数を使用する必要がありました。

http://jsfiddle.net/syH46/11/

-2

これはあなたを整理する必要があります

How to uncheck a radio button?

のいずれか(無地JS)

this.checked = false; 

または(jQueryの)

$(this).prop('checked', false); 
// Note that the pre-jQuery 1.6 idiom was 
// $(this).attr('checked', false); 

希望するもの:

+1

他の回答のコンテンツをコピー・ペーストしないでください。 –

+0

それはこの答えで説明された理由のため動作しません:http://stackoverflow.com/a/6246260/55209 –

+0

私はチェックされたラジオをチェックし、これをオフにします –

0

ラジオボタンは、グループの1つのメンバーが常にチェックされるように設計されています。 3つのオプションがある場合は、3つのラジオボタンを持っている必要があります。

<input type="radio" name="things" value="exam" id="things_exam"> 
<label for="things_exam">exam</label> 

<input type="radio" name="things" value="journey" id="things_journey"> 
<label for="things_journey">journey</label> 

<input type="radio" name="things" value="" id="things_neither" checked><!-- note checked attribute, this is the default, one member of the group should always be checked --> 
<label for="things_neither">neither</label> 

あり、その周りをハックする方法がありますが、ない確実ではなく、UIがどのように機能するかのユーザーの期待に違反することなく。

+0

チェックされたラジオのチェックを外すことはできませんか? –

+0

@GryzOshea - 私の答えの最後の段落を参照してください。あなたはそれを信頼できるものにすることはできません。たとえできたとしても、試してみると意味がありません。 – Quentin

0

http://jsfiddle.net/syH46/4/

利用ライブ機能..ハンドラは、全体のイベントに取り付けられたまま。

+0

選択したラジオをもう一度クリックすると、それでもチェックされます。チェックしないとよいでしょう。 –

+0

そのように働きます。チェックされた値は、フォーム要素がサーバーに更新されたときにのみ更新されます。 – Umesh251

2

私はこの質問は2月に頼まれたけど、私は、この情報が面白い発見し、私はあなたと共有したいと思います:

ラジオボタン

ラジオボタンいくつかのコントロール名が同じコントロール名を共有している場合には、相互に排他的であることを除いて、チェックボックスと似ています。 INPUT要素は、ラジオボタンコントロールを作成するために使用されます。

同じコントロール名を共有するセット内のラジオボタンが最初に「オン」になっていない場合、最初にどのコントロールをオンにするかを選択するためのユーザーエージェントの動作は定義されていません。注意。既存の実装ではこのケースを別々に処理するため、現在の仕様はRFC 1866([RFC1866]のセクション8.1.2.4)と異なります。常に、セット内のラジオボタンの1つがチェックされます。ラジオボタンの要素のどれもが `CHECKED 'を指定していない場合、ユーザーエージェントは最初にセットの最初のラジオボタンをチェックしなければなりません。

ユーザエージェントの動作が異なるため、作成者は、各ラジオボタンのセットが最初に「オン」であることを確認する必要があります。

Source of the information

1

ここで素敵なハックです:

<input type="radio" name="Name1" value="Value1" onmousedown="this.c=this.checked" onclick="if (this.c) { this.checked 
= false }" /> 

このコードはHTMLとして動作するはずですが、必要に応じて、あなたはまた、追加のロジックを持つjavascriptやjqueryの内のイベントを添付することができます。

関連する問題