При нажатии Submit она становится недоступной


Содержание

Игнорирование onSubmit при нажатии кнопки отправки

1 Kim L [2010-03-09 17:32:00]

У меня есть форма, где я указал onSubmit=»validate()» , но я хочу игнорировать проверку, если была нажата кнопка отправки. Есть ли хороший кросс-браузер способ обнаружения нажатия кнопки отправки и, таким образом, игнорирования проверки?

javascript html forms

5 ответов

3 Решение Marcos Placona [2010-03-09 17:34:00]

Почему вы не используете кнопку вместо отправки и устанавливаете ее действие нажатием кнопки? Таким образом, вы можете контролировать, хотите ли вы проверить, отправить или что-то еще, что вам нравится.

1 Quentin [2010-03-09 18:24:00]

Событие отправки только запускается, если форма отправлена ​​пользователем; если он отправлен через JS.

Если JS недоступен, это действует как обычная кнопка отправки. и onsubmit все еще не запускается, так как он также требует JS.

(Прикрепление событий с использованием JS вместо атрибутов внутренних атрибутов, как обычно, предпочтительнее исключить из этого примера для ясности)

1 oezi [2010-03-09 17:36:00]

вы можете попробовать использовать с onClick, который представляет форму — javascript .submit() не запускает функцию onSubmit формы.

Форум

Справочник

Поиск по форуму
Расширенный поиск
К странице.

Заметил что при стандартном использовании формы без скриптов, если у сабмита указано имя, в запросе отправляется имя сабмита как переменной и значение value, т.е. как и любой другой элемент формы с именем.

Однако, при использовании функции submit() переменную с именем сабмита не отправляет. Хотелось бы узнать есть ли способ отправить форму и с этой переменной, естественно с помощью скрипта и не используя click(), требуется это в общем-то для обхода проверки onclick.

Сообщение от a1exei Заметил что при стандартном использовании формы без скриптов, если у сабмита указано имя, в запросе отправляется имя сабмита как переменной и значение value, т.е. как и любой другой элемент формы с именем.

Да, ведь вы сабмитите форму через кнопку
Если на форме несколько кнопок сабмита, то отправятся данные соответствующие нажатой.

А вот, если вы засабмитите просто форму, нажав Enter в поле ввода, то никаких данных о кнопке сабмита послано не будет, потому что вы не нажали ни одну из них.

Так, что логично, что когда в JS вы вызываете submit() у формы, то и посылаются данные как-будто вы засабмитили только форму.
Для того чтобы засабмитить вместе с кнопкой, надо инициировать ее нажатие, либо сделать фейковое hidden-поле с данными нужной вам кнопки Submit

Это я уже понял.)
Дело в том что click() использовать нельзя.

фейковое hidden-поле с данными нужной вам кнопки Submit

Я тоже думал об этом. Получается других способов нет. Ну ладно, пока сделаю так, спасибо за ответ.

Ребята, привет! Задам вопрос здесь, дабы не плодить темы.

Вообщем — есть форма, есть поле ввода, есть кнопка-сабмит, хочу сделать сообщение валидации при незаполненном поле по нажатию на кнопку, а именно есть блок с рисунком, у которого по умолчанию в цсс задан параметр visibility: h
В теле функции val )
. style.visibility=»visible»;
Так вот проблема заключается в том, что при нажатии на кнопку сабмита блок показывается на долю секунды (полагаю, что на время срабатывания onclick) — это корректно?
З.Ы. Я думал, что блок при задании такого условия должен отображаться все время, пока я не напечатаю что-нибудь в поле.

Илон Маск рекомендует:  Что такое код dbminsert

Grego, скорее всего, у тебя происходит переход на другую страницу. Если у тебя ничего на прописано в атрибуте action тега form, тогда переход осуществляется на ту же страницу. То есть для тебя это выглядит, как появление предупреждения и исчезновение, а на самом деле страница просто перезагрузилась.

Если ты пишешь в теге формы onsubmit, то надо писать onsubmit = «return validate();». И если у тебя форма не прошла валидацию, то последней строчкой функции выдавать return false; тогда процесс будет останавливаться. То есть это как по клике на ссылку, чтобы браузер никуда не переходил, надо писать

При нажатии на «submit» ничего не происходит!

Здраствуйте. Вопрос такой: Есть форма отправки комментариев

вот сам comment.php

Так вот, сама кнопка «Комментировать» при нажатии как бы жмется, не ничего не происходит. Уже мозги кипят.

закрывающий тег надо было в конце всех кнопок ставить

Название темы Автор Статистика Последнее сообщение

    Кроме главной ничего не грузится

    Автор Zevss , 09 дек 2020 В: Создание сайтов: веб-технологии и программирование → Системы управления контентом (CMS) → WordPress

    • 7 Ответов
    • 243 Просмотров
    • Olya23
    • 10 дек 2020
  • Как из ничего появляется чего? Система фиксирует файл, а зрительно его не вижу.

    Автор master-vek , 01 май 2020 В: Наш Форум → Курилка

    • 2 Ответов
    • 299 Просмотров
    • master-vek
    • 02 май 2020
  • Вывести текст при нажатии на кнопку

    Автор Thrash , 18 янв 2020 В: Создание сайтов: веб-технологии и программирование → Поиск и установка скриптов

    • 3 Ответов
    • 1 236 Просмотров
    • Russlav
    • 02 фев 2020

  • При нажатии на кнопку информация всплывает в этом же окне, а не в новом

    Автор Unkaider , 12 фев 2015 В: Создание сайтов: веб-технологии и программирование → Javascript и языки разметки

    • 0 Ответов
    • 660 Просмотров
    • Unkaider
    • 12 фев 2015
  • Необходим рабочий скрипт всплывающего окна при нажатии

    Автор Thrash , 06 авг 2014 В: Создание сайтов: веб-технологии и программирование → Поиск и установка скриптов

    • 2 Ответов
    • 1 007 Просмотров
    • Thrash
    • 07 авг 2014
NataliaAntalia 1-й за Октябрь
Очков активности: 480 2 темы, 58 сообщений, 5 баллов репутации
Сайт: zdorovemedicina.ru

ShowPrint (ShowPrint.ru)
Очков активности: 156 0 тем, 13 сообщений, 8 баллов репутации

BLIK
Очков активности: 147 0 тем, 14 сообщений, 7 баллов репутации

Megoydagi (24ho.ru)
Очков активности: 75 4 темы, 13 сообщений, 2 балла репутации

Totti
Очков активности: 54 0 тем, 9 сообщений, 4 балла репутации

NataliaAntalia (zdorovemedicina.ru)
Очков активности: 51 Вне конкурса за определение пользователя месяца

MattCutts (dmitrylee.ru)
Очков активности: 45 Вне конкурса за определение пользователя месяца

miketomlin
Очков активности: 45 0 тем, 10 сообщений, 3 балла репутации

Vmir
Очков активности: 22.5 1 тема, 12 сообщений, 1 балл репутации

kolver
Очков активности: 21 3 темы, 5 сообщений, 1 балл репутации

xxkillaxx
Очков активности: 15 1 тема, 7 сообщений, 1 балл репутации

обработка формы после нажатия на Submit

evgen26

Новичок


обработка формы после нажатия на Submit

Есть форма:
$form = new HTML_QuickForm(‘frmreg’, ‘post’, », », ‘onsubmit=»return checknamesend();»);
$form->addElement(‘header’, ‘MyHeader’, ‘Регистрация физического лица’);
$form->addElement(‘text’, ‘FIO’, ‘Ф.И.О.’);
$form->addElement(‘text’, ’email’, ‘e-mail’);
$form->addElement(‘select’, ‘town’, ‘город:’, $towns);
$form->addElement(‘text’, ‘phone’, ‘телефон’);
$form->addElement(‘textarea’, ‘about’, ‘дополнительная информация о Вас’);
$form->addElement(‘submit’, ‘btnBack’,’ addElement(‘submit’, ‘btnSubmit’, ‘Зарегестрировать’);
$form->addRule(‘FIO’, ‘Незаполнено ФИО!’, ‘required’, », ‘client’);
$form->addRule(’email’, ‘Незаполнен e-mail!’, ‘required’, », ‘client’);
$form->addRule(’email’, ‘Неправильно заполнен e-mail!’, ’email’, », ‘client’);
$form->addRule(’email’, ‘Максимальная длина ФИО не должна превышать 100 символов’, ‘maxlength’, 100, ‘client’);
$form->addRule(’email’, ‘Максимальная длина e-mail не должна превышать 100 символов’, ‘maxlength’, 100, ‘client’);
$form->addRule(‘FIO’, ‘ФИО должно содержать только буквы!’, ‘lettersonly’, », ‘client’);
$form->applyFilter(‘FIO’, ‘trim’);
$form->setRequiredNote(‘* поля, обязательные к заполнению’);

При нажатии на submit форма проверяет правила addRule и переходит на другую страницу. При этом javascript-функция checknamesend(),указанная в конструкторе формы, не выполняется. Мне надо чтобы вначале шла проверка addRule, а потом, если все нормально, шла проверка javascript.Как это сделать?

Фанат

oncle terrible

Altex

Новичок

evgen26

Новичок

я quickform юзаю 3-й день. Где именно там parse error?Функция javascript описана выше по коду, просто не стал ее приводить чтобы не загромождать код. У меня все работает, только не проверяет checknamesend(). Вот я и спрашиваю, как это сделать.

qf генерит следующий код(оставлена только одна проверка на фио чтобы не загромождать форум)

Тема: «Веб-страница недоступна» после нажатия «Submit» при подаче заявки

LinkBack
  • LinkBack URL
  • About LinkBacks
  • Bookmark & Share
  • Tweet this thread
  • Опции темы

    «Веб-страница недоступна» после нажатия «Submit» при подаче заявки

    Заполнил заявку ПОЛНОСТЬЮ, нажал submit ПК долго думал и выбросил вот что Веб-страница недоступна. потом я нажал стрелочку назад в браузере тоже самое что теперь делать ведь я не знаю прошла заявка или нет.
    Причем что интернет работал и работает отлично!

    Последний раз редактировалось Toxec; 16.11.2009 в 15:42 . Причина: Хочу выделить жирным тему


    Почему кнопка submit работает только при нажатии дважды на моем примере?

    Посмотрите на эту скрипку:

    Когда кнопка отправки нажата один раз, она удаляет текстовое редактирование без видимых причин, но ничего не делает, но во второй раз он работает при нажатии и переходит на страницу.

    Пожалуйста, помогите мне с тем, что делает этот код.

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

    Вот что говорит ваш код:

    1. При нажатии на текст создайте новый элемент ввода, кнопку отправки и форму.
    2. При размытии скрыть элемент ввода (а не кнопку отправки)

    Поэтому, когда вы нажимаете кнопку «Отправить» в первый раз, она фактически запускает событие размытия и скрывает ввод.

    Кроме того, ваш старый текст не пересматривается, потому что вы используете .prev для его получения. Это выберите предыдущий соседний брат, но поскольку элемент ввода находится в форме, другой элемент не является братом.

    Эта скрипка должна сделать то, что неправильно, более очевидно. Обратите внимание, как первоначальное предупреждение не извлекает текст FOO. Также попробуйте нажать кнопку «Отправить».

    Неактивная кнопка submit (атрибут DISABLED)

    Иногда на сайте необходимо сделать форму, в которую пользователь вводит какие-либо данные. Полей в форме может быть сколько угодно, однако всегда есть поля обязательные для заполнения. Как же проверить, заполнил пользователь нужное поле или нет. Есть два пути:

    1. Проверка в обработчике, т.е. пользователь заполняет нужные поля, отправляет форму, а дальше обработчик проверяет обязательные поля, и если какое либо поле не заполнено – возвращает пользователя обратно. Все просто, однако необходим механизм для передачи значений уже заполненных полей обратно в форму, который можно реализовать с помощью сессий, однако это не очень удобно.
    2. Проверка методами JavaScript – все гораздо проще (в плане работы самой формы). Задаем каждому полю событие onchange или любое другое реагирующее на действие пользователя (ну не onmouseover конечно, хотя наверное можно сделать даже забавно…), после которого написанная нами функция будет проверять , заполнены ли обязательные поля и разрешать или запрещать кнопку submit.

    Первый вариант относится больше к разделу PHP, поэтому пока рассматриваться не будет. Рассмотрим более подробно второй. Первое что нам необходимо – сама форма:

    При нажатии Submit она становится недоступной

    0 Пользователей и 1 Гость просматривают эту тему.

    [CODE]Array ( [var] => Begin! )

    RomikChef

    • новичЕк
    • Глобальный модератор
    • Ветеран
    • Сообщений: 5698

    • +0/-0
    • 2
    Submit при нажатии на Enter

    Алексей
    какой ты смешной человек.
    откуда ты сейчас вытащил эту форму? Где в ней вообще на ентер жать?
    Мы говорили о вполне конкретной форме.
    А сейчас ты приводишь совершенно другую.
    Нехорошо.

    Ты вообще вопрос-то читал? Я тебе напомню.

    Jean:
    написал какой — то текст в input type=text , нажал Enter и произошел submit

    Алексей

    • Фанат форума
    • Постоялец
    • Сообщений: 176
    • +0/-0
    Submit при нажатии на Enter

    дык он же привёл потом форму с кнопкой:

    Jean:
    одно уточнение.
    Сабмит все таки происходит.
    но вот :

    при нажатии на Enter отправляется только переменная test.
    а send нет, а мне необходимо, чтобы и send отправлялась, можно ли такое сделать?

    RomikChef

    • новичЕк
    • Глобальный модератор
    • Ветеран
    • Сообщений: 5698

    • +0/-0
    • 2
    Submit при нажатии на Enter

    Phoinix

    • RW
    • Ветеран
    • Сообщений: 1097
    • +0/-0
    • 2
    Submit при нажатии на Enter

    Неужели до сих пор не понятно, что send все-таки передается в любом случае, вот только т.к. у этой переменной отсутствует value, то переменная приходит пустая, и соответсвенно работать с ней становится несколько затруднительно.

    Итог: ?[name]=[value] — первое правило формы

    RomikChef

    • новичЕк
    • Глобальный модератор
    • Ветеран
    • Сообщений: 5698
    • +0/-0
    • 2
    Submit при нажатии на Enter

    Алексей

    • Фанат форума
    • Постоялец
    • Сообщений: 176
    • +0/-0
    Submit при нажатии на Enter

    RomikChef:
    Никаких для них нету авторитетов.

    Phoinix

    • RW
    • Ветеран
    • Сообщений: 1097
    • +0/-0
    • 2
    Submit при нажатии на Enter

    Алексей
    Наверно потому, что кроме своих ответов пользователи ничего не видят.

    RomikChef
    Ага. и если нажмет, то у нас в адресе будет два сенда. красота.

    Может быть, лучше заставить автора вопроса немного подумать, прежде чем бежать с готовыми решениями?

    Это был первый ответ RomikChef, в котором ясно все сказано. Но конечно городить огород дальше гораздо интереснее.

    [OFF]
    [модераторам]
    Может закрыть эту ветку, а то я чувствую, что скоро начнутся обвинения в предвзятости.
    [/модераторам]
    [/OFF]

    Защита от мультисабмита

    Автор статьи: Сергей Каминский

    Одним из наиболее распространенных способов взаимодействия между пользователем и сайтом являются формы. Это позволяет делать онлайн-заказы и общаться с другими посетителями на сайте. Но проблема в том, что пользователи после заполнения формы по несколько раз подряд нажимают кнопку отправки данных, надеясь ускорить таким образом процес передачи информации, что приводит к появлению в базе нескольких идентичных записей.

    Поэтому обязательно нужно позаботиться о том, чтобы кнопка становилась неактивной при нажатии, но в то же время сообщала пользователю о том, что его данные находятся в стадии обработки и ему нужно немного подождать.

    Защищаем форму от мультисабмита

    Чтобы избежать многократного нажатия кнопки пользователем, мы будем ее деактивировать после первого нажатия и менять текст кнопки, например, на «Подождите, пожалуйста!». Это, во-первых, исключит возможность повторного нажатия, а во-вторых мы таким образом сообщим пользователю о том, что его данные обрабатываются и ему нужно просто немного подождать. Делается это следующим образом:

    После нажатия на кнопку она примет следующий вид:

    Кнопка станет неактивной после нажатия и поменяет текст

    Тестируем работу кнопки

    Совсем не обязательно отправлять скрипту данные чтобы протестировать кнопку. Для этого можно заменить значение action=»» и поставить вместо адреса скрипта, который будет обрабатывать данные отправленные через форму, следующий код javascript:void(0); В результате при нажатии на кнопку данные не будут никуда передаваться, а кнопка будет работать точно также:

    Вот таким нехитрым способом можно защитить сайт от мультисабмита и предотвратить повторную отправку одних и тех же данных пользователем.

    Другие записи по теме в разделе статьи по JavaScript

    обработка формы после нажатия на Submit

    evgen26

    Новичок

    обработка формы после нажатия на Submit

    Есть форма:
    $form = new HTML_QuickForm(‘frmreg’, ‘post’, », », ‘onsubmit=»return checknamesend();»);
    $form->addElement(‘header’, ‘MyHeader’, ‘Регистрация физического лица’);
    $form->addElement(‘text’, ‘FIO’, ‘Ф.И.О.’);
    $form->addElement(‘text’, ’email’, ‘e-mail’);
    $form->addElement(‘select’, ‘town’, ‘город:’, $towns);
    $form->addElement(‘text’, ‘phone’, ‘телефон’);
    $form->addElement(‘textarea’, ‘about’, ‘дополнительная информация о Вас’);
    $form->addElement(‘submit’, ‘btnBack’,’ addElement(‘submit’, ‘btnSubmit’, ‘Зарегестрировать’);
    $form->addRule(‘FIO’, ‘Незаполнено ФИО!’, ‘required’, », ‘client’);
    $form->addRule(’email’, ‘Незаполнен e-mail!’, ‘required’, », ‘client’);
    $form->addRule(’email’, ‘Неправильно заполнен e-mail!’, ’email’, », ‘client’);
    $form->addRule(’email’, ‘Максимальная длина ФИО не должна превышать 100 символов’, ‘maxlength’, 100, ‘client’);
    $form->addRule(’email’, ‘Максимальная длина e-mail не должна превышать 100 символов’, ‘maxlength’, 100, ‘client’);
    $form->addRule(‘FIO’, ‘ФИО должно содержать только буквы!’, ‘lettersonly’, », ‘client’);
    $form->applyFilter(‘FIO’, ‘trim’);
    $form->setRequiredNote(‘* поля, обязательные к заполнению’);

    При нажатии на submit форма проверяет правила addRule и переходит на другую страницу. При этом javascript-функция checknamesend(),указанная в конструкторе формы, не выполняется. Мне надо чтобы вначале шла проверка addRule, а потом, если все нормально, шла проверка javascript.Как это сделать?

    Фанат

    oncle terrible

    Altex

    Новичок

    evgen26

    Новичок

    я quickform юзаю 3-й день. Где именно там parse error?Функция javascript описана выше по коду, просто не стал ее приводить чтобы не загромождать код. У меня все работает, только не проверяет checknamesend(). Вот я и спрашиваю, как это сделать.

    qf генерит следующий код(оставлена только одна проверка на фио чтобы не загромождать форум)

    Илон Маск рекомендует:  Что такое код loadlibrary
  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL