私はこのようなラジオ・グループのスタイルを変更するためにCSSを使用しています:なぜJqueryはHTMLにインラインスタイルを追加していますか?
をそれはラベルタグ内の実際の入力(ボタン)を入れ子に隠し、その後にdisplay:none
への入力自体を設定することによって行われていますCSS、およびなど、ボタンになるためにラベル自体のスタイル:それはCSSですべてを行うことができます...しかし、いくつかのブラウザので、(私は、あなたにのlookin' IE8以下てる)
<label for="likert1" class="likert">
<input type="radio" id="likert1" name="patientViewGroup" value="1">
1
</label>
:checked
pseudoclassを認識しないでください。実際の入力はフォームの値を渡すもので、チェックされていることを常に記録しているわけではないので、JQueryを救済します。
ラベルの1つがクリックされたときにaddClassを ".amClicked"に設定すると、ラジオの "checked"属性が "true"に切り替わり、 "amChecked"クラスが削除されます。兄弟。簡単だよね?
$('.likert').on("click",function() {
console.log("clikcy!");
if(!$(this).hasClass('amChecked')) {
$(this).addClass("amChecked");
$(this).children(":radio").attr("checked",true).css("display","none");
}
$(this).siblings().removeClass("amChecked")
.children(":radio").css("display","none");
});
まあ、それはjQueryのは、何らかの理由で、私のdisplay: none;
および未をオーバーライドしている私の<input>
にインライン「スタイル」タグを追加することで地獄曲がっ思われることを除いて、次のようになります。ここではjQueryのコードがあることです下記の#3のように、ラジオボタン自体を隠し:
そして、ここでは、その入力コードは、クリック後に次のようになります。
<input type="radio" id="likert3" name="patientViewGroup" value="3"
checked="checked" style="display: inline-block; " class="amChecked">
さらに悪いことに、上記のようにクリックコードに.css("display","none")
を追加しても、それを上書きしない - ボタンはまだ表示されます。私はremoveClassラインに追加していない場合は、そのボタンがちょうどように、そこに未チェックのまま:
はSO - jQueryのこれを追加しているなぜ誰もが私を伝えることができ、unbidden、私のコードに、それをやめるために何かできることはありますか?どんな助けでも大歓迎です!
jsFiddleの例を作成できますか? – j08691
'.amChecked'を' .amClicked'以外に追加しています – kidwon
隠しラジオボタンに 'display:none'を使うべきではありません。 'position:absolute;を使用してください。左:-10000ピクセル; IEは、 'display:none'または' visibility:hidden'で明示的に隠されているラジオボタンやチェックボックスの "クリック"イベントを尊重しません。 – Pointy