03.08.2017, 12:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от ФедорН
|
Пользователь может и не захотеть заказывать, а просто сделать расчет. Поэтому не логично начинать с (лишнего) действия "добавить", Сразу видно строку, он считает, а дальше уже решает, что ему делать.
|
А расчет разве не по значениям полей? А отсутствие полей вообще разрешено формой? А если не захотеть заказывать, а посчитать, то этому противоречит добавление полей?
А по отношению к калькулятору, это о месте где же он есть и причем тут прокрутить. Я не знаю чего вы в общем хотите сделать, делайте как находите нужным, но в ваших рассуждениях все таки есть странности.
|
|
03.08.2017, 13:09
|
Аспирант
|
|
Регистрация: 19.06.2017
Сообщений: 40
|
|
laimas, отсутствие полей из калькулятора разрешено формой (пока), по той причине, что при присвоении textaera статуса обязательного поля данные попадающие туда из калькулятора не учитываются, выдается сообщение о том, что поле пустое. Как понимаю, тут идет проверка, ввел ли пользователь что-то с клавиатуры, а не попало ли что-то в эту ячейку и откуда... Больше я с этим не разбирался.
Добавление полей конечно же не противоречит осуществлению расчета без заказа, но если вы уже даете пользователю ссылку на "сделать расчет", зачем еще какие-то действия. Моя логика тут такова: если в ОС вы нажимаете "калькулятор", он открывается, вы же не добавляете еще в него какое-то поле, сразу можете считать. Конечно, можно привести и много антиаргументов, но как я уже говорил, со своими (не)знаниями языка, я выбираю понятные/готовые решения, в которые мне более-менее по силам внести какие-то правки. С вами, как с разработчиком-гуру, в этой части я спорить даже не посмею ))
Вопрос по:
4) иначе проверка каптчи
5) если каптча Ок выполняем Ajax
я использую invisible captcha, поэтому мне тут не совсем понятно про "проверка каптча". Т.е. как обозначить "если каптча Ок".
Она не токеном проверяется? Или токен только ключи сверяет?
function onSubmit(token) {
document.getElementById("send").submit();
}
Что есть success function я понимаю, но к чему она должна относиться?
Последний раз редактировалось ФедорН, 03.08.2017 в 13:18.
|
|
03.08.2017, 13:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Делайте как вам угодно, но мне не понятна ваша логика.
Можете какую угодно каптчу использовать, сторонний сервис, свою ли, но роль ее понятна да - проверить "на робота". Так когда должна отправляться форма - после проверки каптчи и результата этой проверки или же каптча сама по себе, а Ajax ее ждать будет? Наверное же первое, второе же не возможно в связи с асинхронностью данных процессов.
То есть ввод в каптчу, отправка, ответ положительный - если да, то только сейчас можно отправлять форму, иначе нет.
|
|
05.08.2017, 13:26
|
Аспирант
|
|
Регистрация: 19.06.2017
Сообщений: 40
|
|
jQuery(document).ready(function($) {
var callbackFormWidth = $('.callback-btn').attr('data-formwidth');
if(!callbackFormWidth) {
callbackFormWidth = '400px';
}
$('.inline-container').width(callbackFormWidth);
if($.isFunction($.colorbox)){
$(".callback-form-show").colorbox({
width:callbackFormWidth
});
}
jQuery(document).ready(function($) {
$( ".submit-button" ).click(function( event ) {
event.preventDefault();
$('.submit-button').attr('disabled', 'disabled');
});
$('.callback-form-container').submit(function() {
var formInputs = $(this).find('.validate');
var errors = '';
$(formInputs).each(function() {
if($.trim(this.value) == '') {
fieldLabel = $(this).parent().find('span.label-text').html();
errors += '- ' + fieldLabel + '\n';
}
});
if(errors.length > 0) {
alert('Пожалуйста, заполните следующие поля:\n\n' + errors);
return false;
}
else
{
function get_action(form) {
var v = grecaptcha.getResponse();
if(v.length == 0)
{
return false;
grecaptcha.reset();
}
else
{
return true;
$.ajax({
type: "POST",
url: "/reCaptcha.php",
data: form.serialize(),
dataType: "json",
success : function(text){
if (text == "success"){
formSuccess();
} else {
formError();
submitMSG(false,text);
}
}
});
}
}
}
});
});
});
laimas, поразбирался, набросал, как понял.
Ошибок в структуре, полагаю, куча.
Но сейчас не грузится лайтбокс.
Ранее с такой ошибкой встречался, когда допускал "промахи" в балансе скобок, сейчас все на 5 раз перепроверил, видимо, дело в коде.
Ткнете носом?
|
|
05.08.2017, 13:50
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Когда документ загружен, возникает событие onload. Этот момент сообщает, что DOM сформирована и можно работать с ней - устанавливать обработчики событий у элементов и т.д. В jQuery это событие описывается и таким образом - jQuery(document).ready(function($) {})
Вопрос - как должен интерпретировать jQuery строку 12 вашего кода?
... else { function get_action(form) { ... } else { return true; $.ajax(...) } - это как понять?
Последний раз редактировалось laimas, 05.08.2017 в 13:58.
|
|
06.08.2017, 12:09
|
Аспирант
|
|
Регистрация: 19.06.2017
Сообщений: 40
|
|
Сообщение от laimas
|
Когда документ загружен, возникает событие onload. Этот момент сообщает, что DOM сформирована и можно работать с ней - устанавливать обработчики событий у элементов и т.д. В jQuery это событие описывается и таким образом - jQuery(document).ready(function($) {})
Вопрос - как должен интерпретировать jQuery строку 12 вашего кода?
|
Честно, я пытался искать, в каком случае используется jQuery(document).ready(function($) {}) внутри такой же функции, но я не смог найти. Подскажите, как построить правильно запрос в поисковике, чтобы найти такую информацию.
Изначально в плагине был следующий код (поэтому я и продолжил добавлять свой в эту функцию):
jQuery(document).ready(function($) {
var callbackFormWidth = $('.callback-btn').attr('data-formwidth');
if(!callbackFormWidth) {
callbackFormWidth = '400px';
}
$('.inline-container').width(callbackFormWidth);
if($.isFunction($.colorbox)){
$(".callback-form-show").colorbox({
width:callbackFormWidth
});
}
jQuery(document).ready(function($) {
$('.callback-form-container').submit(function() {...
Но как понимаю, в моем случае это все выражение (заместо второй jQuery(document).ready...) должно быть обернуто в функцию. form.submit(function() {}) ?
Сообщение от laimas
|
... else { function get_action(form) { ... } else { return true; $.ajax(...) } - это как понять?
|
Разумеется, возврата значений не нужно, выполняем код.
|
|
06.08.2017, 12:30
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
jQuery(document).ready(function($) {
//здесь все обработчики
//строка 12 это глупость, то есть этот обработчик удалить
//выбросить и строки кода 13-16, не на кнопку submit устанавливается обработчик, а на отправление формы
$('.callback-form-container').submit(function(e) {
e.preventDefault();
//здесь проверка заполнения полей и т.п. относящееся к форме
//если ошибки выход, но
//if(errors.length > 0) {
// alert('Пожалуйста, заполните следующие поля:\n\n' + errors);
// return false;
//}
//более чем странно, с учетом того, что код рассчитан на HTML5
//в таком случае нативная проверка и то приятнее будет
//если каптча использует серверный API, то ajax запрос проверки каптчи,
//в методе success которого в случае Ок, отправление формы ajax-запросом
//если каптча использует клиентский API, то отправление формы ajax-запросом по результату проверки в ее callback функции
}):
});
else { function get_action(form) { ... } else { return true; $.ajax(...) } - это полная ахинея, такого быть не должно.
|
|
|
|