5

以前にチェックしたラジオがすでにチェックされているページをロードするためのフォームを取得しようとしています (新規ロード時)。

そのページの送信は、javascript に渡すことができる php 変数として保持されます。残りは単純なはずですが、うまくいきません。

私のコード:

<div class="question">
            <label for="sv_213">Question?</label> 
            <input 
                    class="radio"
                    type="radio" 
                    value="Yes" 
                    name="sv_213" 
                />Yes
            <input 
                    class="radio"
                    type="radio" 
                    value="No" 
                    name="sv_213"
                />No

        </div>

私のJavaScript:

$(function() {
    var $213 = Yes;
    $("input[name='sv_213'][value="$213"]").attr('checked', true);

    });?

上記のjsでは

var $213 = <dynamically generated content>

チェックされたラジオボタンの値と等しく設定されるように

これが機能しないjsフィドルです: http://jsfiddle.net/CW8AC/

助けてくれてありがとう。

ちなみに私のコードはこれに基づいています、以前に尋ねられた質問: Set selected radio from radio group with a value

4

3 に答える 3

12

これは文字列であり、ブール値や数値ではないため、値「はい」を引用符で囲む必要があります。

var $213 = "Yes";

また、次のように + を使用して変数をセレクターに追加する必要があります。

$("input[name=sv_213][value="+$213+"]").attr('checked', true);

更新されたフィドル、動作: http://jsfiddle.net/CW8AC/1/

完全な js コード:

$(function() {
    var $213 = "Yes";
    $("input[name=sv_213][value="+$213+"]").attr('checked', true);

    });

更新:## jQuery 1.6 以降、ブール値で .prop メソッドを使用することもできます (これが推奨される方法です)。

$("input[name=sv_213][value="+$213+"]").prop('checked', true);

私の場合、.attr() メソッドはラジオ ボタンを動的に選択するために機能しませんでしたが、.prop() は機能しました。

于 2012-10-10T00:16:10.460 に答える
0

JavaScript ソリューションは次のようになります:- 2 つのラジオ ボタンのみの場合:

let radios = document.getElementsByName(nameProperty);
let value = "1";//value you want to compare radio with

if (radios[0].value == value) {
  radios[0].checked = true;
}else{
  radios[1].checked = true;
}

3 つ以上のラジオ ボタンの場合:

let radios = document.getElementsByName(nameProperty);
let value = "1";//value you want to compare radio with

for (let i = 0, length = radios.length; i < length; i++) {
  if (radios[i].value == value) {
    radios[i].checked = true;
    
    // only one radio can be logically checked, don't check the rest
    break;
  }
}
于 2021-09-06T09:45:09.467 に答える