8

これは私のjQueryスクリプトです:

$("input[type=radio]:checked").live("click", function() {
    $(this).attr("checked",false);
});

すべてのラジオボタンをオンまたはオフにできるようにしたい。コードは、チェックされたラジオがクリックされたときにのみトリガーされることを想定しています。しかし、どういうわけか、ラジオのクリック(チェックされているかどうかに関係なく)がこのイベントをトリガーします。これは、ブラウザが最初にラジオをチェックしてからスクリプトを実行するかのようです。

私の場合alert($("input[type=radio]:checked").size())、それは私に正しいカウントを与えました。

私はFF4でコードをテストしていますが、ソリューションがIEにも対応できることを願っています。

わかりました、私の質問は紛らわしいようですので、これは私が欲しいもののための動作するコードです、しかしそれは私が避けることができることを望む追加のカスタム属性を必要とします。

<input type="radio" name="group1" value="1" isChecked="false"/>
<input type="radio" name="group1" value="2" isChecked="false"/>
<input type="radio" name="group1" value="3" isChecked="false"/>

<script>

$(document).ready(function(){
    $("radio").click(function(){
        if($(this).attr("isChecked")=="false"){
            $(this).attr("isChecked","true");
            $(this).attr("checked",true);
        }
        else{
            $(this).attr("isChecked","false");
            $(this).attr("checked",false);
        }
    });
});

</script>
4

1 に答える 1

11

これは、実際にはラジオ ボタンが使用されることを意図した方法ではありません。ラジオボタンとチェックボックスの間のどこかにある入力コントロールを作成しようとしているようです。

あなたが取ることができるいくつかのアプローチがあります:

1) 別のボタンを使用して、ラジオ ボタンをクリアします。

HTML:

<input id="clearRadios" type="button">Clear</input>

jQuery:

$('#clearRadios').click(function() {
    // use attr only if you're using an older version of jQuery
    $('input[type=radio]').prop('checked', false);
});

2) ラジオ ボタンのように機能するように調整されたチェックボックスを使用します。

var $chkboxes = $('input[type=checkbox]');
$chkboxes.click(function() {
    var currChkbox = this;
    $chkboxes.each(function() {
        if (this !== currChkbox) {
            $(this).prop('checked', false);
        }
    });      
});

私だったら、ほとんどの場合、最初の選択肢を選ぶでしょう。

于 2011-07-13T04:33:59.890 に答える