| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Как отправить форму несколько раз |
| Автор: Paradox 1.3.2004, 14:48 | ||||
хочу перебрать все формы на странице, удовлетворяющие условию
submit() отрабатывает только для последней формы, хотя форм, удовлетворяющих условию явно больше, это видно просто если смотреть хтмл тект в чем проблема |
| Автор: Paradox 1.3.2004, 14:51 | ||
вот пример хтмл для которого не работает
|
| Автор: Sardar 1.3.2004, 15:15 |
| Отправить несколько форм с одной страницы невозможно, есть варианты: 1) отправлять все одной формой - ИМXО лучший 2) отправлять формы по очереди через нульфрейм Опиши подробней задачу - решим. |
| Автор: Alx 1.3.2004, 15:20 | ||
нормально выводит alert'ы - 1,2,4 дело в том, что одновременно нельзя субмитить три формы. Поэтому делаем так: <script> function RecalcOrder() {var f_cnt=document.forms.length-1; for (var i=0;i<=f_cnt;i++) {if (document.forms[i].elements[0].value=='orderbasket') sendform(document.forms[i]) } } function sendform(forma) {var formnameval = forma.elements[0].value; var basketcodeval = forma.elements[1].value; var basketcntval = forma.elements[2].value; var urla=forma.action + "?formname=" + formnameval + "&basketcode=" + basketcodeval + "&basketcnt=" + basketcntval; window.open (urla,"",""); window.close; } |
| Автор: Paradox 1.3.2004, 15:26 | ||
ALEXANDRO
можно поподробнее что тут делается и зачем ? |
| Автор: Paradox 1.3.2004, 15:30 | ||
Sardar
|
| Автор: Sardar 1.3.2004, 15:38 | ||||
Отправляется форма методом GET вручную.
Страничка поделена на два фрейма: 1) фрейм с контентом 2) фрейм в 0 пикселей - нульфрейм В аттрибуте target формы указываем нульфрейм, тогда при отправке будет перезагружатся нульфрейм и давать сигнал главному фрейму. Главный фрейм получив сигнал отсылает следующую форму. |
| Автор: Alx 1.3.2004, 16:16 |
| <script> function RecalcOrder() {var f_cnt=document.forms.length-1; for (var i=0;i<=f_cnt;i++) {if (document.forms[i].elements[0].value=='orderbasket') sendform(document.forms[i]) } } function sendform(forma) {var formnameval = forma.elements[0].value; // задаём в переменную значение полей в форме var basketcodeval = forma.elements[1].value; var basketcntval = forma.elements[2].value; var urla=forma.action + "?formname=" + formnameval + "&basketcode=" + basketcodeval + "&basketcnt=" + basketcntval; // создаём переменную интернет адресом в котором в ручную записываем параметры sendforma = window.open (urla,"",""); // открываем окно с этим адресом, данные отсылаются sendforma.close(); // тут же закрываем окно } </script> пардоньте, очень спешил, несколько ошибок наляпал. Воть так-то буит лучше! |
| Автор: Alx 1.3.2004, 16:20 | ||
1. а если action разный? 2. не стоит фреймы делать, отних одна морока! если только iframe, и то не знаю, стоит ли... |
| Автор: Sardar 1.3.2004, 16:29 | ||||||||
Тогда фреймы.
Ну я не знаю чем тебе фреймы не нравятся. Вдруг надо отправить форму именно методом POST - файл например.
И практически все оболочки под ИЕ и другие браузеры будут прибивать этот popup.
А ты уверен что данные дойдут? Если запрос все таки дойдет, то сервак тут же прибьет скрипт, не дав ему отработать. Если страница PHP то можно использовать ignore_user_abort(true). |
| Автор: Paradox 2.3.2004, 07:08 |
| ALEXANDRO все конечно хорошо, но никаких лишних окон открывать не хочется, да и не пропустит у меня начальство такое решение, к тому же Sardar прав, скрипт действительно убивается, поэтому хочется как-то подругому |
| Автор: Paradox 2.3.2004, 07:15 |
| Sardar если не затруднит можно хотя бы наметки кода, а то совсем ниче не ясно, так как я в веб полный ламер |
| Автор: IZ@TOP 2.3.2004, 08:27 | ||
Paradox, все очень просто: пишем два скрипта. Один скрипт грузится в главную страницу, другой в фрейм (страница которая получает данные), все это происходит через iframe.
За точность не ручаюсь, но суть я думаю ясна. |
| Автор: Sardar 2.3.2004, 17:00 | ||||
| Как я долго не извращался, вот сейчас фантазия разыгралась Файл с формами: form.htm(php)
Код скрипта forms.php может быть таким:
А теперь мое мнение: все эти извращенения не нужны, за исключением случаев когда надо отсылать несколько форм на разные серверы. В твоем случае мы отсылаем все на один сервер, почему бы не сделать это все в одной форме? В английском я слаб, так что глаз может резать... |
| Автор: Paradox 4.3.2004, 14:59 |
| Sardar спасибо за участие в одной форме все не делается так как страница формируется на лету на основании данных из базы разработку этого сайта начинал не я, и если я щас сделаю все в одной форме полетит много чего левого в логике работы сайта, поэтому мне проще отправить несколько форм, чем извращаться над одной и потом еще черт знает сколько править |
| Автор: Sardar 5.3.2004, 14:34 | ||
Если даные берутся из БД, то предполагаю что их много, а значит туева хуча форм, а значит все это отсылатся будет в десятки раз медленней(минуты) чем одной формой.
А жаль, меня коробит если нужно соглашатся с чьей-нибудь тупостью. Но это вопрос третий |