(function($) { $(document).ready(function () { $('.product-feedback form') .on('beforeSubmit', function (e) { e.preventDefault(); var $form = $(this); var fd = new FormData($form[0]); var mark = parseInt($form.find("[name='Response[mark]']:first").val()); if (mark && (mark < 4)) { var _ok = true; $('#response-contacts').each(function() { $('#response-name', this).each(function() { if ($(this).val()) { $(this).parent().removeClass('has-error'); } else { $(this).parent().addClass('has-error').removeClass('has-success'); _ok = false; } }); $('#response-email', this).each(function() { if (/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/.test($(this).val())) { $(this).parent().removeClass('has-error'); } else { $(this).parent().addClass('has-error').removeClass('has-success');; _ok = false; } }); $('#response-phone', this).each(function() { var _value = $(this).val(); if (_value && (_value.indexOf('_') == -1)) { $(this).parent().removeClass('has-error'); } else { $(this).parent().addClass('has-error').removeClass('has-success'); _ok = false; } }); }); if (!_ok) { $('#response-contacts').each(function() { if ($(this).is(':visible')) { $(this).closest('form').yiiActiveForm('validate'); } else { $(this).modal('show').find('.has-error').removeClass('has-error'); $('.form-group', this).addClass('required'); } }); return false; } } if ($form.data('is_submitting')) { return false; } $form.data('is_submitting', true); $.ajax({ url: $form.attr('action'), type: "POST", dataType : "json", cache: false, contentType: false, processData: false, data: fd, //указываем что отправляем success: function(data) { $('#response-contacts').modal('hide'); if (data.result) { $('.modal.product-feedback-success').modal('show'); $form.find('input[name=Response\\[mark\\]]').val(''); $form.find('.new-response-rating').raty('score', 0); $form[0].reset(); } else { $('.modal.product-feedback-error').modal('show'); } $form.data('is_submitting', false); $form.data().yiiActiveForm.validated = false; } }); }) .on('submit', function (e) { e.preventDefault(); }); $('.product-feedback').on('click', '.usefull-btn', function (e) { e.preventDefault(); var $btn = $(this); var $response = $btn.closest('.response'); var params = { 'responseId': $response.data('response-id'), 'isUsefull': $btn.data('is-usefull') }; $.get($btn.data('href'), params, function (data) { if (data.result) { $btn.find('.count') .text($btn.data('is-usefull') ? data['usefull_count'] : data['useless_count']); } }, 'json'); }); }); })(jQuery);