X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Вопрос по коду jQuery
ixman
ixman
Topic Starter сообщение 11.1.2018, 20:19; Ответить: ixman
Сообщение #1


Может кто из опытных разжуёт мне в чём принципиальное отличие двух кусочков кода, так как визуально они делают одно и то же.

$('#comments').fadeOut('fast', function() {
$(this).append(data).fadeIn('slow');
});

от

$('#comments').hide().html(data).fadeIn('slow');

Собственно клик подгружает на страницу форму и пару скриптов. Плагин валидации форм и правила валидации полей формы. Так вот при первом варианте кода правила валидации формы вообще никак не реагируют, а вот при втором работают. Причём, даже если итак сделать

$('#comments').fadeOut('fast', function() {
$('#comments').html(data).fadeIn('slow');
});

то разницы никакой. Валидация не работает.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 11.1.2018, 21:31; Ответить: ShowPrint
Сообщение #2


Ixmanполучается что вопрос сводится к "в чём разница между append и html"? Так что-ли?
Вопрос снимается как дурацкий после внимательного прочтения стартпоста  :)

В качестве data у тебя что?

Не может быть это проблемой аналогичной моей "с областью видимости переменных"?


Сообщение отредактировал ShowPrint - 11.1.2018, 21:36
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 11.1.2018, 21:49; Ответить: ShowPrint
Сообщение #3


Сижу, смотрю, туплю...

Первый вывод который напрашивается - правила валидации могут быть не видны за пределами функции их загрузившей, т.е. fadeOut('fast', function() {


Сообщение отредактировал ShowPrint - 11.1.2018, 21:50
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 11.1.2018, 21:50; Ответить: ixman
Сообщение #4


(ShowPrint @ 12.1.2018, 00:31) *
В качестве data у тебя что?


data содержит html код, который получен через ajax запрос

(ShowPrint @ 12.1.2018, 00:31) *
Не может быть это проблемой аналогичной моей "с областью видимости переменных"?
 

не думаю что это, но чем чёрт не шутит. Да и сами правила валидации я прописывал в код страницы по разному. Сработало только тогда, когда прописал их прямо в код шаблона формы. Но меня такой вариант не устраивает, так как js код в теле страницы не хорошо.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 11.1.2018, 22:07; Ответить: ShowPrint
Сообщение #5


(Ixman @ 12.1.2018, 00:50) *
data содержит html код, который получен через ajax запрос
В том числе и правила валидации? Я так понял что они у тебя на js, нэ?

По приведенному коду и условию что в data содержится html код, то ты его просто добавляешь к комментам. Не сильно понимаю как (куда/когда) грузятся правила валидации...

Иван, если это не сильно большой секрет, то кинь в ЛС не сильно большой, но понятный кусок кода и пример data (просто в виде строки).
Сейчас ужо убегаю, а завтра после работы могу попробовать включить моск и подумать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 11.1.2018, 22:23; Ответить: ixman
Сообщение #6


ShowPrint, ноутбук на работе остался. Сейчас не могу кинуть код. Если только завтра вечером.



(ShowPrint @ 12.1.2018, 01:07) *
В том числе и правила валидации? Я так понял что они у тебя на js, нэ?



да они на js

Завтра выложу более подробный код, будет понятнее


Сообщение отредактировал Ixman - 11.1.2018, 22:24
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 11.1.2018, 23:26; Ответить: fedornabilkin
Сообщение #7


Кидай код сюда, я тоже по возможности гляну завтра. Очень уж заинтересовал код. Непонятно для чего скрывать и сразу же открывать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 12.1.2018, 0:42; Ответить: ShowPrint
Сообщение #8


(Ixman @ 12.1.2018, 01:23) *
да они на js
Вполне возможно что JS остаётся внутри функции.

Можно проверить - вернуть внутри скрипта переменную/функцию и посмотреть существует ли она:
а) внутри функции (сразу после загрузки);
б) за функцией (сразу после её закрытия).

Забрасывай код, Федор точно причину найдёт ;)  
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 13.1.2018, 12:36; Ответить: ixman
Сообщение #9


Итак собственно  код

Загружаем форму и скрипты по клику

$(document).on('click', '.load-comments', function(e) {
urls = ['https://www.google.com/recaptcha/api.js', '/js/plugins/validate/comments.js?v=1.30', '/js/plugins/validate/additional-methods.min.js', '/js/plugins/upload/jquery.form.min.js'];
e.preventDefault();
$.ajax({
type: 'GET',
cache: false,
data: {
id: <?=$data['id'];?>
},
url: '/comments',
success: function(data) {
loadJavaScript(urls);
$('#comments').hide().html(data).fadeIn('slow');
}
});
});

в коде есть функция подгружающая по клику необходимые скрипты, для большей ясности сама функция прилагается

function loadJavaScript(urls) {
urls.forEach(function(url, i) {
var script = document.createElement('script');
script.src = url;
script.setAttribute('data-load', 'ajax');
script.setAttribute('async', '');
script.setAttribute('defer', '');
document.body.append(script);
});
}

Файл comments.js прикрепил к посту в виде txt. Он не конечен и часть кода буде от туда убрана. Но проблема именно в нём. Не работала именно эта часть кода

$('#commentsForm').validate({
errorClass: 'error',
validClass: 'success',
errorPlacement: function(error, element) {
element.closest('p').after(error);
},
ignore: '.ignore',
rules: {
c_author: {
required: true,
rangelength: [2, 20],
checknames: true
},
c_email: {
required: true,
checkEmail: true
},
c_message: {
required: true,
rangelength: [10, 1000]
}
},
messages: {
c_author: {
required: 'Пожалуйста представьтесь',
rangelength: 'Имя от 2 до 20 символов',
checknames: 'Только рус. и анг. буквы'
},
c_email: {
required: 'Укажите ваш email',
checkEmail: 'Введите корректный email адрес'
},
c_message: {
required: 'Введите сообщение',
rangelength: 'Сообщение от 10 до 1000 символов'
}
},
invalidHandler: function(form) {
grecaptcha.reset();
},
submitHandler: function(form) {
grecaptcha.execute();
}
});

Ещё прикрепил шаблон формы, но он по сути не важен здесь.


Это код 

$('#comments').hide().html(data).fadeIn('slow');

понятно можно упростить до

$('#comments').html(data).fadeIn('slow');

если блоку #comments задать свойство display:none чтобы он плавно появлялся
Какие ещё данные нужны для полной картины происходящего, хотя суть вопроса не в этом.

Прикрепленные файлы
Прикрепленный файл  comments.tpl.txt ( 4,56 килобайт ) Кол-во скачиваний: 26
Прикрепленный файл  comments.txt ( 4,04 килобайт ) Кол-во скачиваний: 17
 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 13.1.2018, 18:01; Ответить: fedornabilkin
Сообщение #10


Что-то на первый взгляд какая-то заморочная валидация, неужели она себя оправдывает?
Я не нашел то место, где происходит вызов валидации формы. $('#commentsForm').validate({ насколько я понял, это только установка конфигурации.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1172 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44767 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Нужны 50$ в btc - обменяю на 55 Wmz (высылаю первым по коду протекции)
3 Tutich 5407 20.7.2021, 13:56
автор: EvilGomel
Открытая тема (нет новых ответов) Вопрос - платное размещение баннеров на сайте
10 WGN 3126 14.12.2020, 14:20
автор: Peterson
Открытая тема (нет новых ответов) Вопрос по рекламе в "инстаграме"
Только активные аккаунты могут создавать или редактировать рекламу
8 Zubkov 16021 17.1.2020, 17:49
автор: Forumacc


 



RSS Текстовая версия Сейчас: 29.3.2024, 14:41
Дизайн