Javascript 如何不在函数中重新写入所有这些值?

Javascript 如何不在函数中重新写入所有这些值?,javascript,jquery,Javascript,Jquery,如您所见,我有以下功能: var review = function() { $('a[name=review_button]').live("click", function (e) { e.preventDefault(); /* * @array of reservations * @all of the fields */ var $tr_options = '';

如您所见,我有以下功能:

var review = function() {
    $('a[name=review_button]').live("click", function (e) {
        e.preventDefault();
        /*
         * @array of reservations
         * @all of the fields
         */
        var $tr_options = '';
        var reservations = [];
        $('#custom-headers option:selected').each(function (i, selected) {
            reservations[i] = $(selected).text();
        });
        var amount = $('input[name=amount-price]').val();
        var currency_value = $('input[name=currency-value]').val();
        var currency_name = $('.currency_appendto option:selected').html();
        var actual_amount = $('input[name=actual-amount]').val();
        var actual_remaining = $('input[name=actual-remaining]').val();
        var funds_arrival_date = $('input[name=funds-arrival]').val();
        var paid_to = $('.paidto option:selected').html();
        var checkbox = $('.multi-transaction:checked').map(function () {
            return this.value
        }).get();
        var options = troptions(reservations, amount, currency_name, currency_value, actual_amount, actual_remaining, funds_arrival_date, paid_to);
        $.each(options, function (k, v) {
            $tr_options += '<tr>' + '<td>' + k + '</td>' + '<td>' + v + '</td>' + '</tr>';
        }); //one line creating trs awesome

        var appendto = (
        '<table class="table table-striped mb-none">' + '<thead>' +
        '<tr>' + '<th>Information</th>' + '<th>Values</th>' + '</tr>' +
        '</thead>' +
        '<tbody>' + $tr_options + '</tbody>' +
        '</table>'
        );

        $('[name=review-information]').html(appendto);
    });

    $('button[name=submit-transaction]').live("click", function (e) {
        e.preventDefault();
        $.ajax({
            url: '/transactions/submit',
            type: 'POST',
            data: {
                amount: $('input[name=amount-price]').val(),
                currency_value: $('input[name=currency-value]').val(),
                currency_name:  $('.currency_appendto option:selected').html(),
                actual_amount: $('input[name=actual-amount]').val(),
                actual_remaining: $('input[name=actual-remaining]').val(),
                funds_arrival_date: $('input[name=funds-arrival]').val(),
                paid_to: $('.paidto option:selected').html(),
            },
            success: function (data) {
                console.log(data);
            }
        });
    });
}
review();


$(".date-mask").inputmask("d/m/y",{ "placeholder": "dd/mm/yyyy" });
$(".amount-czk").inputmask('integer', { rightAlign: false });
});

我需要在应用程序的多个区域重用它们,但是我不想一直重写这些元素。在review函数之外写入这些值将返回
.val()的身份不明。因为这些值总是在变化。。我如何创建一个函数,使我能够在调用时返回对所有这些值的访问

只需将它们作为对象的属性返回即可

然后访问为

var values = getValues();
values.actual_amount; // foo

看起来您试图解决的真正问题是如何将UI数据绑定到一组变量(“视图模型”)并保持它们的同步。如果是这样,您可能需要考虑一个框架,如(客户端+服务器)或(客户端/ JS只)。
function getValues() {
    var o = {};
    o.reservations = [];
    $('#custom-headers option:selected').each(function (i, selected) {
        o.reservations[i] = $(selected).text();
    });
    o.amount = $('input[name=amount-price]').val();
    o.currency_value = $('input[name=currency-value]').val();
    o.currency_name = $('.currency_appendto option:selected').html();
    o.actual_amount = $('input[name=actual-amount]').val();
    o.actual_remaining = $('input[name=actual-remaining]').val();
    o.funds_arrival_date = $('input[name=funds-arrival]').val();
    o.paid_to = $('.paidto option:selected').html();
    return o;
}
var values = getValues();
values.actual_amount; // foo