帐单地址与送货地址jQuery相同

时间:2012-09-05 16:05:10

标签: javascript jquery jquery-ui

我无法使用jQuery将结算地址复制到送货地址。我已经使用没有自定义jQuery元素的普通jane形式成功完成了这项工作。但是当我将自定义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>

非常感谢任何帮助!

6 个答案:

答案 0 :(得分:5)

您用来美化复选框(或其中的任何内容)的插件正在替换<input type="checkbox"/>上的div模拟事件。

它不传播click事件,但 传播change,所以你应该倾听它; < / p>

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

为了改进您的代码,您可能希望将attr('checked')替换为prop('checked')替换,但您的代码仍然可以正常工作。 prop()的jQuery文档中概述了这方面的原因; http://api.jquery.com/prop

答案 1 :(得分:4)

Demo of options

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

应该可以

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

<小时/> 正如评论中所指出的,有很多方法可以让这只猫受到伤害。 http://jsfiddle.net/sRt6G/1/ this.checked似乎是最简单的。

答案 2 :(得分:4)

您正在使用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

答案 3 :(得分:1)

可能是您正在尝试复选框的点击事件。你试过了吗?

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

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

答案 4 :(得分:1)

这也可能有所帮助。

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

Demo

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

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

答案 5 :(得分:0)

您可能想尝试以下代码: $(&#34; input.billingAddress&#34)。在(&#34;变更&#34;,函数(){

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

            });