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



 

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

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

Открыть тему
Тема закрыта
> Ajax-отправка формы. Чтобы не перезагружало страницу
prolisk
prolisk
Topic Starter сообщение 5.8.2018, 18:13; Ответить: prolisk
Сообщение #1


Написал код, и все вроде работает. Но когда в поле эмейла пишешь символ собачки "@" то страница все таки перезагружается.

Код на главной, на яваскрипте.
    <script type='text/javascript'>
function loginka(){
var mails=document.getElementById('email1').value;
alert(mails);
      var xhttp=new XMLHttpRequest();
   xhttp.onreadystatechange=function(){
   if (xhttp.readyState==4 && xhttp.status==200)
      document.getElementById('res').innerHTML=xhttp.responseText;
   }
   xhttp.open('POST','register.php',true);
    xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
     var str='mails='+mails;
   xhttp.send(str);
}

</script>

Код на хтмл:
            <form role="form" action="register.php" method="post" enctype="plain">
                        <input type="email" name="mails" id='email1' class="subscribe-input" placeholder="Введите свой e-mail..." required>
                        <button class='btn btn-lg btn-green subscribe-submit' type="submit" onclick='loginka()'>Отправить</button>
                    </form>
                    <span id='res'></span>

И полный код страницы register.php:
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCtype html5>
<html>

<body>
<?
$ulogin = $_POST['mails'];

if ($ulogin != ""){
echo 'Скоро мы с Вами свяжемся.';
}
else {
echo 'Ошибка. Заполните поле эмейл на <a href="/">главной странице</a>';
}

?>



</body>
</html>


Если пустое поле или просто текст - то ничего не перезагружается, работает как нужно. А вот когда эмейл - то перезагружает страницу


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 5.8.2018, 19:51; Ответить: k0ttee
Сообщение #2


Уверен, что нужно писать на чистом JS, если на сайте наверняка куча другого с jQuery?

Отправляю методом GET, у меня все работает.
Зачем нужен Ajax, когда $('#resilt').load('/subscribe.php&mail='+$('#email1').value); есть?

Поручать браузеру нативно, через input type="email", проверять валидность - это надежно... но не стилизуемо (ну или я не догадался как кастомизировать).

Добавлено спустя 2 минуты 38 секунд:
Если пустое поле или просто текст - то ничего не перезагружается, работает как нужно. А вот когда эмейл - то перезагружает страницу

По тому что у тебя есть и action и submit, форма срабатывает.


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 5.8.2018, 23:36; Ответить: prolisk
Сообщение #3


(k0ttee)
По тому что у тебя есть и action и submit, форма срабатывает.

сразу об этом думал.
но почему то если передать просто 'textasdasds', то срабатывает "как надо"? :)

Добавлено спустя 8 минут 57 секунд:
Проблему решил вот так: заменил button на
<input type='button'>
(submit не подходит - тоже страницу перезагружает.

Добавлено спустя 18 минут 14 секунд:
Еще маленькая загвоздка - в Ентере :)


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 6.8.2018, 9:38; Ответить: k0ttee
Сообщение #4


submit не подходит - тоже страницу перезагружает

Субмит для того и сделан. :D
Проблему решил вот так: заменил button на

Молодец! Значит button до сих пор глючит, продолжаем делать кнопки используя input. :unsure: :cry:
Еще маленькая загвоздка - в Ентере

Кх-кхм... Вообще-то - даже в двух Ентерах, имей это ввиду когда будешь бороться: на полноразмерных клавиатурах таких кнопок две, а кей-коды у них разные. А у эпла - вообще return вместо enter. А на смартфонах тоже есть "подобие иентера". Короче говоря, ну ты понял. :friends:


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 6.8.2018, 13:18; Ответить: prolisk
Сообщение #5


(k0ttee)
кей-коды у них разные

сделал через яваскрипт код.
<script>
    document.getElementById('mails2').addEventListener('keypress', function(event) {
        if (event.keyCode == 13) {
            event.preventDefault();
            document.getElementById("input2").click();
        }
    });
</script>

Оба ентера работают, мак не проверял, с айфона все работает "как надо" :)
Сначала гуглил как отключить Ентер. Есть 2-3 способа, а потом уже где-то натолкнулся, что можно и нажать на ИД.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 8.8.2018, 20:22; Ответить: k0ttee
Сообщение #6


Оба ентера работают, мак не проверял

У тебя второй ентер сделан незавимой клавишей цифрового блока или через комбинацию с ноутбучной fn?


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 9.8.2018, 0:13; Ответить: prolisk
Сообщение #7


(k0ttee)
через комбинацию с ноутбучной fn?

нет, работает на ноуте без ФН, на ПК - тоже все норм.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 861 7.4.2024, 18:05
автор: Alex-777
Открытая тема (нет новых ответов) Apple пойдет на сотрудничество с конкурентами, чтобы выбиться в лидеры с ИИ
4 Room 1221 31.3.2024, 1:15
автор: Liudmila
Открытая тема (нет новых ответов) Как составить уравнение, чтобы назначить цену для товара?
2 rownong27 759 21.3.2024, 12:53
автор: Lumex
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44907 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Залить html страницу на 20 доменов
6 TABAK 1705 22.5.2023, 16:24
автор: KORUP


 



RSS Текстовая версия Сейчас: 19.4.2024, 22:48
Дизайн