03.10.2019, 14:01
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
$(document).ready(function () {
$("#firstform").submit(function (e) {
e.preventDefault();
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
url: 'modalform/mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод сообщения об успешной отправке
$('.msgs').html(data);
$('.formTitle').css("display","none");
$(formNm).css("display","none");
setTimeout(function(){
$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
},
error: function (jqXHR, text, error) {
// Вывод сообщения об ошибке отправки
$('.msgs').html(error);
$('.formTitle').css("display","none");
$(formNm).css("display","none");
setTimeout(function(){
$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
}
});
return false;
});
//для стилей формы
var $input = $('.form-fieldset > input');
$input.blur(function (e) {
$(this).toggleClass('filled', !!$(this).val());
});
});
|
|
03.10.2019, 14:02
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
Так? Если я верно сделал, то не работает
|
|
03.10.2019, 14:06
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
Сообщение от laimas
|
А нафига они вообще нужны? Вы логику того что у вас с ними написано понимаете или нет?
var formID = $(this).attr('id'); - this, это форма источник, то есть так которая отправляется и проще так this.id. А значит $('#' + formID) это тоже самое что и $(this). К чему это бесполезная писанина?
А далее вы отсылаете запросы от всех своих форм на один адрес. И о каком типе разном речь, методе, так он у вас жестко указан type: "POST".
У вас много ошибок как на клиенте, так и на сервере. К примеру, вот это пустяк if(empty($_POST['uname']) ..., но баг весьма неприятный, так как достаточно передать на сервер просто один пробел, и поле будет считаться не пустым.
Если вам сложно разобраться, то сделайте два разных обработчика, то есть не $("form").submit(function ..., а $("ID формы связи").submit(function () ... и $("ID формы поиска").submit(function () ... где и действуйте согласно задачам. Вот только нужно отменять действие по умолчанию (отправление формы естественным образом) таким образом в обработчиках:
....submit(function (e) {
e.prevetDefault();
....
PS. Пропустил return false;, это тоже самое что e.prevetDefault();, так что тут все норм.
|
Я здесь ошибся, не type а method, думал к этому можно привязаться
|
|
03.10.2019, 14:20
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
Вот код для поиска и для формы
//ajax форма
$(document).ready(function () {
$("#firstform").on('submit', function(){
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
url: 'modalform/mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод сообщения об успешной отправке
$('.msgs').html(data);
$('.formTitle').css("display","none");
$(formNm).css("display","none");
setTimeout(function(){
$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
},
error: function (jqXHR, text, error) {
// Вывод сообщения об ошибке отправки
$('.msgs').html(error);
$('.formTitle').css("display","none");
$(formNm).css("display","none");
setTimeout(function(){
$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
}
});
return false;
});
//для стилей формы
var $input = $('.form-fieldset > input');
$input.blur(function (e) {
$(this).toggleClass('filled', !!$(this).val());
});
});
// Ajax поиск
$("#search").on('input', function() {
var words = $(this).val();
if (words.length > 2) {
$.ajax({
type: "POST",
url: ROOT_PATH + "/search/",
data: {
words: escape(words + ' ' + auto_layout_keyboard(words)),
set: 2,
ajax: true
},
success: function(data)
{
// Результат поиска
if (data != 'false') {
if (data != $("#search").attr('data-content')) {
$("#search").attr('data-content', data);
$("#search").popover('show');
}
} else
$("#search").popover('hide');
}
});
}
else {
$("#search").attr('data-content', '');
$("#search").popover('hide');
}
});
|
|
03.10.2019, 14:23
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
Сообщение от laimas
|
Если же форма поиска отправляется не AJAX, то у вас будет всего один обработчик для формы связи как $("ID формы связи").submit(function (e) ... и мешать форме поиска он не будет. В обработчике форма как JQ объект это $(this), а "магию" с ID из кода выбросить.
|
Поиск Ajax
|
|
03.10.2019, 14:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
В запросе формы поиска тоже нужно запрещать действие по умолчанию, то есть либо return false;, либо как писал выше.
|
|
03.10.2019, 14:43
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
laimas,
Вот так сделал, поиск работает форма нет
//ajax форма
$(document).ready(function () {
$("#firstform").submit(function(){
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
url: 'modalform/mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод сообщения об успешной отправке
$('.msgs').html(data);
$('.formTitle').css("display","none");
$(formNm).css("display","none");
setTimeout(function(){
$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
},
error: function (jqXHR, text, error) {
// Вывод сообщения об ошибке отправки
$('.msgs').html(error);
$('.formTitle').css("display","none");
$(formNm).css("display","none");
setTimeout(function(){
$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
}
});
return false;
});
//для стилей формы
var $input = $('.form-fieldset > input');
$input.blur(function (e) {
$(this).toggleClass('filled', !!$(this).val());
});
});
// Ajax поиск
$("#search").on('input', function() {
var words = $(this).val();
if (words.length > 2) {
$.ajax({
type: "POST",
url: ROOT_PATH + "/search/",
data: {
words: escape(words + ' ' + auto_layout_keyboard(words)),
set: 2,
ajax: true
},
success: function(data)
{
// Результат поиска
if (data != 'false') {
if (data != $("#search").attr('data-content')) {
$("#search").attr('data-content', data);
$("#search").popover('show');
}
} else
$("#search").popover('hide');
}
});
}
else {
$("#search").attr('data-content', '');
$("#search").popover('hide');
}
return false;
});
|
|
03.10.2019, 15:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от frost68
|
форма нет
|
Сообщение от frost68
|
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
|
Это в помойку, я же писал выше.
$("#firstform").submit(function(){
// Получение форму
var form = $(this);
$.ajax({
type: "POST",
url: 'modalform/mail.php',
data: form.serialize(),
success: function (data) {
// Вывод сообщения об успешной отправке
$('.msgs').html(data);
$('.formTitle').hide();
form.hide();
setTimeout(function(){
form.show();
$('.formTitle').show();
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
},
error: function (jqXHR, text, error) {
// Вывод сообщения об ошибке отправки
$('.msgs').html(error);
$('.formTitle').hide(;
form.hide();
setTimeout(function(){
form.show();
$('.formTitle').show();
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
}
});
return false;
});
Что именно не работает?
В форме поиска:
$("#search").on('input', function() {
var f = $(this), words = this.value.trim();
if (words.length > 2) {
$.ajax({
type: "POST",
url: ROOT_PATH + "/search/",
data: {
words: escape(words + ' ' + auto_layout_keyboard(words)),
set: 2,
ajax: true
},
success: function(data)
{
// Результат поиска
if (data != 'false') {
if (data != f.attr('data-content')) {
f.attr('data-content', data).popover('show');
}
} else f.popover('hide');
}
});
}
else f.attr('data-content', '').popover('hide');
return false;
});
Последний раз редактировалось laimas, 03.10.2019 в 15:04.
|
|
03.10.2019, 15:05
|
Аспирант
|
|
Регистрация: 10.11.2017
Сообщений: 33
|
|
laimas,
Вставил, то что вы прислали, поиск работает, форма нет
|
|
03.10.2019, 15:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от frost68
|
поиск работает, форма нет
|
Если скрипт отправки формы находится в файле form.js, то проблема в нем, для него указан неверный путь, ошибка "файл не найден", статус 404.
|
|
|
|