7

我无法使用 jQuery 将帐单地址复制到送货地址上。我已经使用没有自定义 jQuery 元素的纯简表单成功地做到了这一点。但是当我将自定义 UI 添加到复选框时,它似乎破坏了代码。我尝试了几次代码更改,但都没有工作。

当用户点击“我的帐单地址与我的送货地址相同”时,什么也没有发生。这是我的 jQuery 代码:

<script type="text/javascript">
$(document).ready(function(){ 
    $('#check-address').click(function(){
        if($('#check-address').attr('checked')){
            $('#address-field1').val($('#address-field').val());
            $('#city-field1').val($('#city-field').val());
            $('#zip-field1').val($('#zip-field').val());
            var state = $('#state-field option:selected').val();
            $('#state-field1 option[value=' + state + ']').attr('selected','selected');
        } else { 
            //Clear on uncheck
            $('#address-field1').val("");
            $('#city-field1').val("");
            $('#zip-field1').val("");
            $('#state-field1 option[value=Nothing]').attr('selected','selected');
        };

    });
});
</script>

任何帮助是极大的赞赏!

4

6 回答 6

5

您正在使用 jquery 1.7 。你应该使用 prop 而不是 attr

  $('#check-address').prop('checked')



       $(elem).attr('checked')    // returned true (Boolean) prior to 1.6
        $(elem).attr('checked')   // now returns "checked" (string) versions after 1.6
        $(elem).prop('checked')    // now returns true (Boolean) versions after 1.6
于 2012-09-05T16:07:47.737 回答
5

您用来美化复选框(或其他任何功能)的插件将 替换为<input type="checkbox"/>div模拟复选框上的事件。

它不会传播click事件,但传播 a change,因此您应该改为监听它;

$('#check-address').change(/* function */);

为了改进您的代码,您可能希望将检查替换为attr('checked')prop('checked')但无论如何您的代码仍然可以工作。jQuery 文档中概述了这样做的原因prop()http://api.jquery.com/prop

于 2012-09-05T16:13:55.057 回答
5

选项演示

$('#check-address').attr('checked')

应该可以

$('#check-address').is(':checked')


正如评论中所指出的,有很多方法可以给这只猫剥皮。http://jsfiddle.net/sRt6G/1/ this.checked似乎是最简单的。

于 2012-09-05T16:06:55.983 回答
1

可能是您试图进行复选框的单击事件。你有没有尝试过:

$('#check-address').on('change', function (e) {...

 if ($('#check-address').is(":checked")....
于 2012-09-05T16:10:17.773 回答
1

这也可能有帮助。

$('input[name=city\\[' + this.value + '\\]]').val($('input[name=city\\[1\\]]').val());

演示

填写顶部的表格,然后使用复选框复制字段的值。

它适用于动态创建的字段。如果表单是硬编码的,则替换this.value为字段的索引。

于 2015-10-22T21:35:14.890 回答
0

您可能想尝试以下代码: $("input.billingAddress").on("change",function(){

            var val1 = $("input.street").val();
            var val2 = $("input.suitNumber").val();
            var val3 = $("input.city").val();
            if(this.checked)
            {
                $("input.streetb").val(val1);
                $("input.suitNumberb").val(val2);
                $("input.cityb").val(val3);
            }

            else
            {
                $("input.streetb").val("");
                $("input.suitNumberb").val("");
                $("input.cityb").val("");
            }

            });
于 2015-10-19T00:20:11.317 回答