POST Несколько форм с одинаковым идентификатором из JavaScript - PullRequest
1 голос
/ 22 декабря 2011

У меня небольшая проблема ... Я читаю много постов и нахожу некоторые ответы, но ...! У меня есть несколько форм, которые динамически создаются в коде PHP! У меня есть флажок для каждой формы, и я проверяю формы для сохраненияизменения! моя проблема, когда я проверяю 3 формы только первый сохраненный, потому что только это сообщение на страницу save.php! я делаю некоторые изменения в своем коде:

Что я могу сделать, чтобы этот код отправлять всеформы для сохранения страницы .php, когда я нажимаю кнопку th сохранить все

function save_all()
{
var all_elem=document.getElementsByTagName("*");
var same_id=new Array();
var index=0;
    var answer=confirm("The prices from checked products will change!Are you    sure");
    if(answer)
    {
        for(var i=0;all_elem.length;i++)
        {
            if(all_elem[i].id=="form1"){
            same_id[index++]=all_elem[i];
            document.forms[all_elem[i]].action="save_all.php";//error
            document.forms[all_elem[i]].submit();//error
            }
        }
    }


//this is my form and i have while loop to create multiple forms
<form id="form1" name="form[<?=$form_counter++;?>]" method="post" class="checkboxes">

Ответы [ 2 ]

5 голосов
/ 22 декабря 2011

Во-первых, идентификаторы должны быть уникальными.Period.

http://www.w3.org/TR/html4/struct/global.html#adef-id

Во-вторых, это слишком много кода и очень неэффективный обход DOM.

var forms = document.getElementsByTagName("form");
for(var i = 0; i < forms.length; i++)
{
    forms[i].submit();
}

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

И если они все должны происходить одновременно, почему они не в одной форме?

2 голосов
/ 22 декабря 2011

Во-первых.Используйте уникальные идентификаторы всегда

Секунды.Вы можете отправлять формы одну за другой, используя Ajax, с помощью jQuery или другой библиотеки, которая вам нравится.Но лучше использовать одну форму, добавив в нее все поля ввода.Поэтому, когда вы отправляете свою форму, все данные будут отправлены в ваш PHP-скрипт (подсказка: используйте уникальные имена для каждого из полей, чтобы вы могли определить, какой продукт они представляют)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...