Advertisement
Guest User

Untitled

a guest
Apr 30th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. <div class="container main-container" id="mainContainer">
  2. <h1>Калькулятор доставки</h1>
  3. <div class="content-container" id="contentContainer"></div>
  4. </div>
  5.  
  6. <script type="text/template" id="calculatorSubmitButtonTemplate">
  7. <div class="btn btn-default" id="calculatorSubmitButton">Рассчитать</div>
  8. </script>
  9.  
  10.  
  11. <script type="text/template" id="cityOfDepartureTemplate">
  12. <div class="panel panel-default">
  13. <div class="panel-body">
  14. <h2>Город отправления</h2>
  15. <div class="input-group">
  16. <input type="text" class="form-control" id="fldCityOfDeparture">
  17. <div id="errorMessageCityOfDeparture" class="help-block"></div>
  18. </div>
  19. </div>
  20. </div>
  21. </script>
  22.  
  23. .not_valid{
  24. border: 1px solid red;
  25. }
  26.  
  27. .valid{
  28. border: 1px solid #ccc;
  29. }
  30.  
  31. window.APP = window.APP || {};
  32.  
  33. APP.CityOfDepartureModel = Backbone.Model.extend({
  34. defaults: {
  35. cityName: undefined
  36. },
  37.  
  38. validate: function(attrs) {
  39. var errorsArr = [];
  40.  
  41. if($.trim(attrs.cityName).length == 0) {
  42. errorsArr.push('Это поле не может быть пустым')
  43. } else {
  44. if(isNaN(attrs.cityName) == false) { errorsArr.push('Это поле не может быть цифрой') };
  45. };
  46.  
  47. if(errorsArr.length != 0) { return errorsArr };
  48. }
  49. });
  50.  
  51.  
  52.  
  53. APP.CalculatorView = Backbone.View.extend({
  54.  
  55. initialize: function() {
  56. this.cityOfDepartureModel = new APP.CityOfDepartureModel();
  57. this.cityOfDepartureWidjet = new APP.CityOfDepartureView({model: this.cityOfDepartureModel});
  58. this.render();
  59. },
  60.  
  61. el: $('#contentContainer'),
  62.  
  63. template: _.template($('#calculatorSubmitButtonTemplate').html()),
  64.  
  65. render: function () {
  66. this.$el.append(this.cityOfDepartureWidjet.render().el);
  67. this.$el.append(this.template());
  68. return this;
  69. },
  70.  
  71. events:{
  72. 'click #calculatorSubmitButton' : 'submit'
  73. },
  74.  
  75. submit: function() {
  76. var cityName = $('#fldCityOfDeparture').val();
  77.  
  78. this.cityOfDepartureModel.set({'cityName': cityName});
  79.  
  80. if(this.cityOfDepartureModel.isValid()) {
  81. this.cityOfDepartureWidjet.validMarkAdd();
  82. } else {
  83. var errorMessagesArr = this.cityOfDepartureModel.validationError;
  84. this.cityOfDepartureWidjet.notValidMarkAdd(errorMessagesArr);
  85. this.cityOfDepartureModel.set({'cityName': undefined});
  86. };
  87.  
  88. console.log('-----------------------');
  89. console.log('city dep: ', this.cityOfDepartureModel.get('cityName'));
  90. }
  91.  
  92. });
  93.  
  94.  
  95.  
  96. APP.CityOfDepartureView = Backbone.View.extend({
  97.  
  98. initialize: function() {
  99.  
  100. },
  101.  
  102. tagName: 'div',
  103.  
  104. className: 'city_of_departure_container',
  105.  
  106. id: 'cityOfDepartureContainer',
  107.  
  108. template: _.template($('#cityOfDepartureTemplate').html()),
  109.  
  110. render: function () {
  111. this.$el.html(this.template());
  112. return this;
  113. },
  114.  
  115. notValidMarkAdd: function(errorMessagesArr) {
  116. this.$el.find('#fldCityOfDeparture').removeClass('valid').addClass('not_valid');
  117.  
  118. this.$el.find('#errorMessageCityOfDeparture').html('');
  119. for(key in errorMessagesArr) {
  120. this.$el.find('#errorMessageCityOfDeparture').append(errorMessagesArr[key] + '<br>');
  121. };
  122. },
  123.  
  124. validMarkAdd: function() {
  125. this.$el.find('#fldCityOfDeparture').removeClass('not_valid').addClass('valid');
  126. this.$el.find('#errorMessageCityOfDeparture').html('');
  127. }
  128.  
  129. });
  130.  
  131.  
  132.  
  133.  
  134. var app = new APP.CalculatorView();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement