0

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

我添加了一个复选框,允许用户单击它,它将复制他们的 form1 结果(逐个字段使用 .val() 而不是 clone() 函数,它弊大于利),以及出现在页。

我在表单中混合了文本、选择下拉菜单和单选按钮。我可以获取文本并选择下拉菜单以复制到其他人,但我似乎无法为单选按钮执行此操作。

以下代码是我如何为 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');
};

});
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();

例如,要设置第二个值,您可以使用:

$('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。

于 2014-10-15T21:37:47.420 回答