demon_mhm
Новичок
почему не работает document.form.submit()
ребят, подскажите плиз:
Есть форма, на ней два листбокса. Когда выбираешь в первом что-то, форма должна обновиться и подгрузить из базы значения для второго. (все формирует PHP на серваке).
Все вроде банально:
Я помогаю кому-то с веб-страницей, с которой у них возникла проблема, я разобрал часть проверки, но поведение процесса отправки не так, как вы ожидали.
Чтобы поймать и остановить событие по умолчанию, я использовал следующее в главе функции
Если я изменю какую-либо его часть, предотвращение действия по умолчанию не будет работать, и страница в MSIE будет отправляться, даже если ошибки проверки будут существовать или сохраняться. В Chrome браузер не отправляет, а выдает ошибку, при этом подпрограмма предотвращения в MSIE отладка обнаруживает ошибку в той же строке.
Chrome: Uncaught TypeError: объект не является функцией
MSIE: объект не поддерживает это свойство или метод
Линия, о которой идет речь:
или любой из вариантов адресации, включая.getEmelentsById(«. «); метод работает отлично, я просто в тупике по поводу проблемы, мысль о том, что мой переводчик JS заполнен, действительно перепутала мой разум.
У кого-нибудь есть идеи, которые НЕ используют JQuery, пожалуйста.
При отправке формы срабатывает событие submit , оно обычно используется для проверки (валидации) формы перед её отправкой на сервер или для предотвращения отправки и обработки её с помощью JavaScript.
Метод form.submit() позволяет инициировать отправку формы из JavaScript. Мы можем использовать его для динамического создания и отправки наших собственных форм на сервер.
Давайте посмотрим на них подробнее.
Событие: submit
Есть два основных способа отправить форму:
- Первый – нажать кнопку или .
- Второй – нажать Enter , находясь на каком-нибудь поле.
Оба действия сгенерируют событие submit на форме. Обработчик может проверить данные, и если есть ошибки, показать их и вызвать event.preventDefault() , тогда форма не будет отправлена на сервер.
- Перейдите в текстовое поле и нажмите Enter .
- Нажмите .
Оба действия показывают alert и форма не отправится благодаря return false :
При отправке формы по нажатию Enter в текстовом поле, генерируется событие click на кнопке .
Это довольно забавно, учитывая что никакого клика не было.
Метод: submit
Чтобы отправить форму на сервер вручную, мы можем вызвать метод form.submit() .
При этом событие submit не генерируется. Предполагается, что если программист вызывает метод form.submit() , то он уже выполнил всю соответствующую обработку.
Иногда это используют для генерации формы и отправки её вручную, например так:
Задачи
Модальное диалоговое окно с формой
Создайте функцию showPrompt(html, callback) , которая выводит форму с сообщением ( html ), полем ввода и кнопками OK/ОТМЕНА .
- Пользователь должен ввести что-то в текстовое поле и нажать Enter или кнопку «OK», после чего должна вызываться функция callback(value) со значением поля.
- Если пользователь нажимает Esc или кнопку «ОТМЕНА», тогда вызывается callback(null) .
В обоих случаях нужно завершить процесс ввода и закрыть диалоговое окно с формой.
- Форма должна быть в центре окна.
- Форма является модальным окном, это значит, что никакое взаимодействие с остальной частью страницы невозможно, пока пользователь не закроет его.
- При показе формы, фокус должен находиться сразу внутри .
- Клавиши Tab / Shift + Tab должны переключать фокус между полями формы, не позволяя ему переходить к другим элементам страницы.
P.S. HTML/CSS исходного кода к этой задаче содержит форму с фиксированным позиционированием, но вы должны сделать её модальной.
Модальное окно может быть реализовано с помощью полупрозрачного
Так как он перекрывает вообще всё, все клики будут именно по этому