Most998: у вас конечно много интересных вещей... Вместо взятия val() от каждого поля и потом составления ассоц. массива, можно просто написать $("#form").serialize()
Далее, события лучше прикреплять через .on('submit', function(event){...})
Ну и напоследок, проверять ответ от скрипта на равенство 0 как числа плохо, так как скрипт возвращает строку. Приводите тогда сначала тип через тот же parseInt, если у вас там всегда число.
Дмитрий: перегрузка - это как в ооп, замена методов. Грубо говоря. По умолчанию сабмит - это отправка формы на адрес action методом method п нажатию кнопки submit. А вы это перехватываете и заменяете. Так вот чтобы после вашего перехвата не происходил стандартный сабмит, надо возвращать false, то есть прервать очередь. И тогда никакие preventDefault не нужны там
Можно было бы пойти и другим путем - проходить также по основному массиву, загоняя все пройденные элементы в подмассив второго большого массива. А как только разница с предыдущим элементом больше единицы, начинать загонять в следующий подмассив. Получится массив массивов. Далее просто вывести их через запятую, соединяя первый и последний элемент дефисом. Будет даже короче.
Только надо не забыть, что все современные браузеры заблокируют такое открытие. Его надо производить по реальному клику при каком-либо переходе. Т.е. логика будет чуть сложнее - проверка вешается на каждый клик, а не просто при инициализации страницы.
у вас товары генерируются на Backend-е, выводятся каким-то шаблоном. Так вот прямо в выводе, если у товара нет видео, то не выводите вообще эту вкладку и DIV для нее
Далее, события лучше прикреплять через .on('submit', function(event){...})
Ну и напоследок, проверять ответ от скрипта на равенство 0 как числа плохо, так как скрипт возвращает строку. Приводите тогда сначала тип через тот же parseInt, если у вас там всегда число.