2013-04-22 4 views
1

Вот общий код для отправки формы кредитной карты через Stripe.js. Мне нужно, чтобы соответствовать этим в поле зрения Backbone я вставил ниже:Как укладывать полосу в задний план?

// Add Submit Btn Event Listener and Stripe Token Generator from fields 
    jQuery(function($) { 
     $('#payment-form').submit(function(event) { 
      event.preventDefault(); 
      var $form = $(this); 
      // Disable the submit button to prevent repeated clicks 
      $form.find('button').prop('disabled', true); 
      Stripe.createToken($form, stripeResponseHandler); 
      // Prevent the form from submitting with the default action 
      return false; 
     }); 
    }); // End jQuery random function 
    var stripeResponseHandler = function(status, response) { 
    var $form = $('#payment-form'); 
     if (response.error) { 
      // Show the errors on the form 
      $form.find('.payment-errors').text(response.error.message); 
      $form.find('button').prop('disabled', false); 
     } else { 
      // token contains id, last4, and card type 
      var token = response.id; 
      // Insert the token into the form so it gets submitted to the server 
      $form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
      // and submit 
      $form.get(0).submit(); 
     } 
    }; // End stripeResponseHandler 

Моя попытка установки это в Backbone View (не работает):

WhiteDeals.Views.ProgramPayment = Backbone.View.extend({ 

initialize: function() { 
    _.bindAll(this); 
}, 

events: { 
    "submit form#payment-form": "createStripeToken" 
}, 

createStripeToken: function(event) { 
    event.preventDefault(); 
    var $form = $(this); 
    // Disable the submit button to prevent repeated clicks 
    $form.find('button').prop('disabled', true); 
    Stripe.createToken($form, stripeResponseHandler); 
    // Prevent the form from submitting with the default action 
    return false; 
}, // createStripeToken 

stripeResponseHandler: function(status,response) { 
    var $form = $('#payment-form'); 
    if (response.error) { 
     // Show the errors on the form 
     $form.find('.payment-errors').text(response.error.message); 
     $form.find('button').prop('disabled', false); 
    } else { 
     // token contains id, last4, and card type 
     var token = response.id; 
     // Insert the token into the form so it gets submitted to the server 
     $form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
     // and submit 
     $form.get(0).submit(); 
    } 
}, 

render: function() { 
    var dealProgram = this.model.toJSON() 
    this.$el.html(JST['program/payment']({ dealProgram: this.model.toJSON() })); 
    // Show Payment Modal 
    $('#payment-modal').modal({ 
     show: true, 
     keyboard: true, 
     backdrop: true 
    }) 
    return this; 
} 

});

+0

Каким образом это не работает? –

ответ

3

Контекст не будет таким же. Когда вы связываете слушателей с объектом events в представлении, контекст автоматически привязывается к самому представлению.
Изменение:

var $form = $(this); 

в

var $form = this.$('#payment-form'); 
+0

@muistooshort true, я отредактирую его. – Loamhoof

Смежные вопросы