我希望一个输入字段的值始终等于另一个输入字段

时间:2014-07-14 17:19:58

标签: javascript angularjs

我有一个用于设置帐单邮寄地址的复选框的复选框,因此如果选中该复选框,则两个值将始终相同,即使其中一个更改。截至目前,我可以获取帐单地址,以便在选中此框后复制邮寄地址,但如果您之后更改了值,则视图不会更新。以下是我到目前为止的情况:

createcustomer.html:

<section class="mainbar" data-ng-controller="createcustomer as vm">
<div class="col-md-4">
                            <label for="txtMailingAddress1">Address 1:</label>
                        </div>
                        <div class="col-md-8">
                            <input type="text" id="txtMailingAddress1" name="txtMailingAddress1" value="" data-ng-model="vm.MailingAddress1" class="form-control FloatLeft" required />
                        </div>

<input type="checkbox" id="checkboxSameAddress" data-ng-model="vm.IsBillingMailing" data-ng-change="vm.copyMailingAddress()" />Check if billing address same as mailing address

<div class="form-group">
                        <div class="col-md-4">
                            <label for="txtBillingAddress1">Address 1:</label>
                        </div>
                        <div class="col-md-8">
                            <input type="text" id="txtBillingAddress1" name="txtBillingAddress1" data-ng-model="vm.BillingAddress1" class="form-control FloatLeft" required />
                        </div>
                    </div>
</section>

createcustomer.js

function copyMailingAddress() {
            if (vm.IsBillingMailing) {
                vm.BillingAddress1 = vm.MailingAddress1;
            }
            else {
                vm.BillingAddress1 = '';
            }
        }

2 个答案:

答案 0 :(得分:0)

一切都错了。你需要应用一些Angular。这是一种方法:

http://jsfiddle.net/RpfNd/

var app = angular.module('shippingApp', []);

app.controller('ShippingCtrl', function ($scope) {
    $scope.mailing = {
        first: 'Jon',
        last: 'Doe',
        address1: '123 Main Street'
    };
    $scope.billing = {};
    $scope.billing_same = false;

    $scope.$watch('billing_same',function(same_as_shipping) {
        if (same_as_shipping) {
            $scope.billing = $scope.mailing;
        }
        else {
            $scope.billing = {};   
        }
    });
});

答案 1 :(得分:-1)

编辑:没有意识到问题与angularjs有关。标题或问题中未说明。以下评论后注明标签。 Mods请删除此答案,如果它对此页面无用。感谢

----------原始答案-------------

更简单的解决方案(我似乎使用的可能是出于懒惰),而且我认为它也更安全。

如果&#34;使用相同的邮寄地址&#34;选中然后使用javascript / jQuery

禁用所有帐单地址字段

然后当发布表单时,验证它(假设你正在使用php):

if(isset($_POST['checkboxSameAddress'])){
    $txtBillingAddress1 = $txtMailingAddress1;
    $txtBillingAddress2 = $txtMailingAddress2;
    //and so on
}

通过这种方式,您可以确保这些值完全相同,而无需使用jQuery / Javascript进行大量操作

注意:输入复选框将需要name属性才能生效