Модуль в интернет-магазине
Добрый день, дорогие программисты!
Возник вопрос. Модуль представляет из себя скрипт, который отправляет заказ на мейл. Но ошибка в том, что скрипт закрывается при оставленных полях (имя, емейл, телефон, комментарий) пустыми. В общем скрипт работает, только при заполненных ВСЕХ полях. Как эта проблему можно решить? Спасибо! Вот пример работы. Кнопка "Купить в 1 клик" САМ МОДУЛЬ |
По умолчанию обязательное поле для заполнения только телефон, но это не сложно исправить отредактировав файл index.xml в архиве с модулем. В нем же можете добавить или изменить перевод да и саму логику работы модуля.
Это из описания, а значит как минимум должна быть возвращена ошибка на не заполненное поле почты. А остальные не обязательны. Если не так, автору скрипта предъявить претензии. |
Автор скрипта красиво слился, в праве вседозволенности )
Написано много что, но в деле не все работает. Поправил основные моменты, но остались те, ради которых и была создана эта тема. Поэтому и задал вопрос здесь, в силу моих незнаний в этой области. Всплывающее окно закрывает, при нажатии на кнопку "сделать заказ" даже при пустых формах. Ошибка выдается - мол незаполненные поля и т.д ,но окно закрывается. |
Цитата:
|
Абсолютно верно. Скрипт завершает свою работу, показывая что поля пустые. И еще одно замечание кстати. Скрипт отправляет форму ТОЛЬКО, ЕСЛИ ВСЕ поля заполнены. В противном случае все та же история - окно просто закрывается.
|
Я спрашивал о форме, ибо скриптов (по принадлежности) два - серверный и клиентский.
|
Видимо значит одна. Есть какие-нибудь варианты решения сия проблемы?
|
Цитата:
Что одна - "срипта"? :) Скриптов не один, но есть серверная, есть клиентская часть. То что отправляет только при заполнении всех полей, это баг серверного скрипта, который отправку почты производит, или конфигурации, что как пишется в индексном файле модуля определяется. То что что-то на клиенте закрывается, до сих пор не понятно закрывается ли при этом форма или нет, то этим занимается клиентский скрипт. Решение конечно есть, нужно смотреть код и исправлять баги. |
Цитата:
|
JavaScript не занимается отправкой почты. Вот по поводу кода приема сообщений, отправки формы, это да, но так вы код то покажите, или кто-то тут экстрасекс? :)
А проблемы с отправкой почты непосредственно, это уже серверный код смотреть надо. |
Проблем с отправкой нет уже. Проблема с закрыванием окна)
У нас два файла: jqBootstrapValidation и jquery.maskedinput <script type="text/javascript"> jQuery(function($){ $("#phone").mask("+7 (999) 999-9999"); }); </script> <script type="text/javascript"><!-- /* Jquery Validation using jqBootstrapValidation example is taken from jqBootstrapValidation docs */ $(function() { $("input,textarea").jqBootstrapValidation( { preventSubmit: false, submitError: function($form, event, errors) { <!-- something to have when submit produces an error ? <!-- Not decided if I need it yet }, submitSuccess: function($form, event) { event.preventDefault(); <!-- prevent default submit behaviour <!-- get values from FORM var foproduct = $("input#foproduct").val(); var foprice = $("input#foprice").val(); var fomodel = $("input#fomodel").val(); var fostock = $("input#fostock").val(); var name = $("input#name").val(); var emailcustomer = $("input#emailcustomer").val(); var phone = $("input#phone").val(); var message = $("textarea#message").val(); var firstName = name; <!-- For Success/Failure Message <!-- Check for white space in name for Success/Fail message if (firstName.indexOf(' ') >= 0) { firstName = name.split(' ').slice(0, -1).join(' '); } $.ajax({ url: "index.php?route=product/product/fastorder", type: "POST", data: {foproduct: foproduct, foprice: foprice, fomodel: fomodel, fostock: fostock, name: name, emailcustomer: emailcustomer, phone: phone, message: message}, cache: false, success: function() { <!-- Success message $('#success').html("<div class='alert alert-success'>"); $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×") .append( "</button>"); $('#success > .alert-success') .append("<?php echo $entry_fo_send_success; ?>"); $('#success > .alert-success') .append('</div>'); <!-- clear all fields $('#contactForm').trigger("reset"); }, error: function() { <!-- Fail message $('#success').html("<div class='alert alert-danger'>"); $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×") .append( "</button>"); $('#success > .alert-danger').append("<?php echo $entry_fo_send_error; ?>"); $('#success > .alert-danger').append('</div>'); <!-- clear all fields $('#contactForm').trigger("reset"); }, }) }, filter: function() { return $(this).is(":visible"); }, }); $("a[data-toggle=\"tab\"]").click(function(e) { e.preventDefault(); $(this).tab("show"); }); }); /*When clicking on Full hide fail/success boxes */ $('#name').focus(function() { $('#success').html(''); }); <!-- --></script> |
Этот код со страницы продукта. Коды из файлов выше указанных слишком длинные, сюда не грузятся ...
|
Цитата:
Офигеть. error: функция, которая будет вызвана в случае неудачного завершения запроса к серверу. error относится к ajax-событиям, это ошибки XMLHttpRequest. Переопределять внаглую их специально заголовками сервера.... Где это такое в реальном jqBootstapValidation выкопано? Нет и не может быть в нем такого. Вообще-то, должна быть отправка, и тип данных возвращаемых json, что удобно. Если в success: сервер вернет ошибку, то работа над ошибками, иначе закрываем форму. |
Часовой пояс GMT +3, время: 07:05. |