не добавлять дубликаты в корзину

0

Я создал корзину в своей PHP-форме, где пользователи могут вставлять в нее свои избранные фильмы.

Вопрос:

Как я могу предотвратить добавление дубликатов фильмов в эту корзину (выбранный список фильмов)?

Вот мой код: (Извините, я не вставлял весь код с тех пор, как он был слишком длинным)

<div id="basket">
   <div id="basket_left">
       <h4>Selected Movies</h4>
       <img id="basket_img" src="http://brettrutecky.com/wp-content/uploads/2014/08/11.png" />
   </div>
   <div id="basket_right">
       <div id="basket_content">
          <span style="font-style:italic">Your list is empty</span>
       </div>
   </div>
</div>

<script type="text/javascript">
var master_basket = new Array();
$(document).ready(function () {$("input[id='selectType']").change(function(){

 // AUTO_COMPLETION PART

$('#btnMove').on('click', function(d) {
    console.log(master_basket);
    d.preventDefault();
    var selected = $("#q").val();
    if (selected.length == 0) {
        alert("Nothing to move.");
        d.preventDefault();
    } else {
        var obj = {
            "movie_name":selected,
               "movie_info": ""
          };
        addToBasket(obj);
    }
    $("#q").val("");
  });
});

function addToBasket(item) {
       master_basket.push(item);
       showBasketObjects();
    }
function showBasketObjects() {
       $("#basket_content").empty();
       $.each(master_basket, function(k, v) {
             $("#basket_content").append("<div class='item_list'>" + v.movie_name + "<a class='remove_link' href='" + k + "'><img width='20' src='http://i61.tinypic.com/4n9tt.png'></a></div>");
       });
Теги:
shopping-cart

2 ответа

1
Лучший ответ

Я лично не предлагаю использовать javascript для предотвращения этого дублирования, поскольку любой может его изменить и вручную вызвать эту проблему, вы должны предотвратить дублирование как в php, так и в javascript.

В любом случае, чтобы выполнить то, что вы хотите в сценарии, я думаю, что этого достаточно, чтобы изменить часть вашего кода:

var master_basket = new Array();
selectedMovies = {};

  ///////

} else {
    var obj = {
        "movie_name":selected,
           "movie_info": ""
      };
    if(!selectedMovies.hasOwnProperty(selected)){
        addToBasket(obj);
        selectedMovies[selected] = obj;
    }
}
  • 0
    Большое спасибо, это сработало :)
0

Попробуйте изменить свою функцию на

 function addToBasket(item) {

    var ifExists = false;

    for (i = 0; i < master_basket.length; ++i) {
      if(master_basket[i] == item)
        ifExists = true;

    }


    if(!ifExists)
       master_basket.push(item);

    }
}
  • 0
    Спасибо за вашу помощь, я попробовал ваш код, но когда я нажимаю кнопку «Добавить в список», он не добавляет название фильма в корзину, а также я вижу в консоли, что я впервые вставляю название фильма это показывает Array [ Object ] , если я вставляю тот же фильм во второй раз, я вижу Array [ Object, object ] в консоли, ..
  • 0
    @ mOna ты можешь предоставить jsfiddle?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню