Модуль в интернет-магазине
Добрый день, дорогие программисты!
Возник вопрос. Модуль представляет из себя скрипт, который отправляет заказ на мейл. Но ошибка в том, что скрипт закрывается при оставленных полях (имя, емейл, телефон, комментарий) пустыми. В общем скрипт работает, только при заполненных ВСЕХ полях. Как эта проблему можно решить? Спасибо! Вот пример работы. Кнопка "Купить в 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, время: 19:09. |