将用户Radio Selection复制到另一个表单

时间:2013-06-12 17:36:05

标签: javascript jquery forms copy radio-button

我的网站上有时会有2个以上的注册表格。它们具有完全相同的字段,因此不得不要求用户继续输入其信息而变得疯狂。

我添加了一个允许用户点击的复选框,它将复制他们的form1结果(使用.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个无线电问题要复制,必须有办法。

更新 添加更大块的代码,因为我认为它可能有助于使这更有意义(并且是的,这个代码确实有效)。同样,我尝试使用与常规文本输入相同的格式来定位单选按钮,但这不起作用。

// 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');
};

});

2 个答案:

答案 0 :(得分:0)

呃我继续前进,只是更改了单选按钮以选择列表而不是问题。

答案 1 :(得分: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();

例如,要设置第二个值,请使用:

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

如果您有两个单选按钮,其值彼此完全相同,请执行以下操作:

<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 />

您只需使用以下内容加入这两个函数:

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

这会将所选选项从secondRadio复制到firstRadio。