1. ホーム
  2. jquery

[解決済み] jQueryでラジオボタンをリセットして、何もチェックされないようにする方法

2022-05-13 12:05:54

質問

HTMLでこのようなラジオボタンがあります。

<td>
    <input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
    <input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
    <input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
    <input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>

これはフォームタグの中にあるのですが、ユーザーがフォームを送信したときに、すべてのラジオボタンをデフォルトに戻したいと思っています。つまり、どれにもチェックが入っていない状態です。

私はこのコードを持っていますが、それは次のようなエラーを出します。 [0] is null or not an object

$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;

IE6でやっています。

どのように解決するのですか?

jQuery 1.6以前のバージョンで使用します。

$('input[name="correctAnswer"]').attr('checked', false);

jQueryの1.6以降のバージョンでは、使用する必要があります。

$('input[name="correctAnswer"]').prop('checked', false);

を使うことができますが、1.6.1+を使用している場合は、最初の形式を使うことができます(以下の注2を参照)。

注1: は、2番目の引数が であって false"です。 ということは "false"です。 はファルシーな値ではありません。

if ("false") {
    alert("Truthy value. You will see an alert");
}

注2: jQuery 1.6.0から、同様のメソッドが2つ存在するようになりました。 .attr.prop という2つの関連する、しかし少し異なることを行うものです。この特定のケースでは、1.6.1+を使用している場合、上記のアドバイスが機能します。1.6.0を使用している場合は、アップグレードする必要があります。もし、詳細を知りたいのであれば、読み続けてください。

詳細です。 ストレートな HTML DOM 要素を扱う場合、DOM 要素に付随するプロパティ ( checked , type , value など)は、HTMLページの実行状態へのインタフェースを提供します。また .getAttribute / .setAttribute インタフェースは、HTML で提供される HTML Attribute の値へのアクセスを提供します。1.6以前のjQueryでは、1つのメソッドを提供することで区別をぼやかしていました。 .attr という1つのメソッドで両方のタイプの値にアクセスできるため、区別があいまいでした。jQuery 1.6+では2つのメソッドを提供しています。 .attr.prop を使うことで、これらの状況を区別することができます。

.prop は DOM 要素にプロパティを設定するのに対し .attr は HTML 属性の値を設定します。プレーンなDOMを扱う場合で、checkedプロパティを設定する場合。 elem.checked になります。 true または false で、実行値 (ユーザが見るもの) を変更し、返される値はページ上の状態を追跡します。 elem.getAttribute('checked') は初期状態のみを返します。 'checked' または undefined で、HTMLからの初期状態に依存する)。1.6.1+ では .attr('checked', false) を使うと elem.removeAttribute('checked')elem.checked = false に変更した場合、後方互換性の問題が多く発生し、HTML 属性を設定したいのか DOM プロパティを設定したいのかが分からなくなるため、このようにしました。より詳しい情報は のドキュメントを参照してください。 .