0

私のサイトには時々 2 つ以上の登録フォームがあります。それらはまったく同じフィールドを持っているので、ユーザーに情報を入力し続けるように頼まなければならないのは気が狂います.

ユーザーがクリックできるようにするチェックボックスを追加しました。これにより、form1 の結果がコピーされます (良いことよりも悪いことをした clone() 関数の代わりに .val() を使用してフィールドごとに)。ページ。

フォームには、テキスト、選択ドロップダウン、およびラジオ ボタンが混在しています。テキストを取得してドロップダウンを選択して他のユーザーにコピーすることはできますが、ラジオ ボタンに対してはできないようです。

次のコードは、1 つのテキスト フィールドと 1 つの選択ボックスに対して私がどのようにそれを行っているかの例です。

$('#sameaddress').click(function () {
    if ($('#sameaddress').attr('checked')) {
        //Text Field
        $('#commerce-checkout-form-registration .registration-form .field-name-field-student-id input').val($('#commerce-checkout-form-registration .registration-form-first .field-name-field-student-id input').val());
        //Select box
        var jobtype = $('#commerce-checkout-form-registration .registration-form-first .field-name-field-job-type option:selected').val();
        $('#commerce-checkout-form-registration .registration-form .field-name-field-job-type option[value=' + jobtype + ']').attr('selected', 'selected');
    };
});         

ですから、私がこれをどのように行っているかを見ることができますが、ラジオの選択で同じことを行うための助けを探しています. 何かご意見は?私が同じ役職にとどまることができれば素晴らしいと思います。コピーするラジオの質問が約 3 ~ 4 あるので、方法があるに違いありません。

UPDATE おそらくこれをより意味のあるものにするのに役立つと思ったので、より大きなコードのチャンクを追加します(そして、はい、このコードは機能します)。繰り返しますが、通常のテキスト入力の場合とまったく同じ形式を使用してラジオ ボタンをターゲットにしようとしましたが、うまくいきませんでした。

// First we need to give the forms some classes we can actually work with.
$("#commerce-checkout-form-registration .registration_information fieldset").addClass("registration-form");
$("#commerce-checkout-form-registration .registration_information fieldset:first").removeClass("registration-form").addClass("registration-form-first");

// Now I add in the check box to use, doing this hear so I can specify that I want it to only show on the first form
$('<div><label for="sameaddress">Use Same Information on additional Registration forms (If applicable)</label><input type="checkbox" name="sameaddress" id="sameaddress" /></div>').insertAfter('.registration_information fieldset:first .field-name-field-how-did-you-hear-about-thi');

// Now lets copy everything to other forms
$('#sameaddress').click(function(){
if($('#sameaddress').attr('checked')){
    $('#commerce-checkout-form-registration .registration-form .field-name-field-student-id input').val($('#commerce-checkout-form-registration .registration-form-first .field-name-field-student-id input').val());
    $('#commerce-checkout-form-registration .registration-form .field-name-field-first-name input').val($('#commerce-checkout-form-registration .registration-form-first .field-name-field-first-name input').val());

    // Copy each line as shown above for each of your text inputs, replacing the parent .field-name-field value for each.

    // For the select boxes see below
    var prefix = $('#commerce-checkout-form-registration .registration-form-first .field-name-field-prefix option:selected').val();
               $('#commerce-checkout-form-registration .registration-form .field-name-field-prefix option[value=' + prefix + ']').attr('selected','selected');
    var jobtype = $('#commerce-checkout-form-registration .registration-form-first .field-name-field-job-type option:selected').val();
                      $('#commerce-checkout-form-registration .registration-form .field-name-field-job-type option[value=' + jobtype + ']').attr('selected','selected');    

} else { 

    //Clear on uncheck

    $('#commerce-checkout-form-registration .registration-form .field-name-field-student-id input').val("");
    $('#commerce-checkout-form-registration .registration-form .field-name-field-first-name input').val("");
    $('#commerce-checkout-form-registration .registration-form .field-name-field-prefix option[value=Nothing]').attr('selected','selected');
    $('#commerce-checkout-form-registration .registration-form .field-name-field-job-type option[value=Nothing]').attr('selected','selected');
};

});
4

2 に答える 2

0

ええと、ラジオボタンを変更して、問題なく機能する代わりにリストを選択しました。

于 2013-06-25T20:06:03.247 に答える
0

これは古い質問ですが、私のように誰かが解決策を必要としているかもしれません。

あなたがこれを持っているとしましょう:

<input type="radio" name="myRadioButton" value="a" />Option One<br />
<input type="radio" name="myRadioButton" value="b" />Option Two<br />
<input type="radio" name="myRadioButton" value="c" />Option Three<br />

ラジオ ボタンから選択した値を取得するには、次を使用します。

$('input[name="myRadioButton"]:checked').val();

たとえば、2 番目の値を設定するには、次のようにします。

$('input[name="myRadioButton"][value="b"]').prop('checked', true);

次のように、互いにまったく同じ値を持つ 2 つのラジオ ボタンがある場合:

<input type="radio" name="firstRadio" value="a" />Option One<br />
<input type="radio" name="firstRadio" value="b" />Option Two<br />
<input type="radio" name="firstRadio" value="c" />Option Three<br />

<input type="radio" name="secondRadio" value="a" />Option One<br />
<input type="radio" name="secondRadio" value="b" />Option Two<br />
<input type="radio" name="secondRadio" value="c" />Option Three<br />

次のようなものを使用して、2 つの関数を結合するだけです。

$('input[name="firstRadio"][value="'+$('input[name="secondRadio"]:checked').val()+'"]')
    .prop('checked', true);

これにより、選択したオプションが secondRadio から firstRadio にコピーされます。

于 2014-10-15T21:37:47.420 に答える