如何不在整个函数中重写所有这些值?

时间:2015-11-28 15:07:12

标签: 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 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 });
});

我拥有所有这些价值观:

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

我需要在应用程序的多个区域重用它们,但是我不想一直重写这些元素。在review函数之外写入这些值会返回未识别的.val();。因为这些值总是在变化。我怎样才能创建一个函数,让我可以在通话时回访所有这些值?

1 个答案:

答案 0 :(得分:2)

只需将它们作为对象

的属性返回即可
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