Как я могу получить значения из нескольких форм и отправить их? - PullRequest
2 голосов
/ 22 октября 2009

У меня есть несколько форм внутри DIVS на моей странице.

У меня есть одна форма, которая содержит текстовое поле и всегда видна, и здесь пользователь нажимает клавишу ввода и отправляет ...

Я хочу получить значения, выбранные в других формах на странице, и отправить их все вместе, а не по одному, чтобы мой код PHP мог использовать «ВСЕ ЗНАЧЕНИЯ» и выполнять поиск в базе данных mysql ...

Возможно ли это с помощью javascript, использующего "<form onsubmit>" для вызова javascript?

любые коды будут оценены ...

спасибо

Ответы [ 4 ]

5 голосов
/ 22 октября 2009

Без Javascript вы не сможете. Одна форма = один запрос.

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

С jQuery все будет примерно так:

$("form").submit(function() {
    combineAndSendForms();
    return false;        // prevent default action
});

function combineAndSendForms() {
    var $newForm = $("<form></form>")    // our new form.
        .attr({method : "POST", action : ""}) // customise as required
    ;
    $(":input:not(:submit, :button)").each(function() {  // grab all the useful inputs
        $newForm.append($("<input type=\"hidden\" />")   // create a new hidden field
            .attr('name', this.name)   // with the same name (watch out for duplicates!)
            .val($(this).val())        // and the same value
        );
    });
    $newForm
        .appendTo(document.body)  // not sure if this is needed?
        .submit()                 // submit the form
    ;
}
2 голосов
/ 22 октября 2009

Вы можете добавить отправку в эту форму, а затем собрать другие значения с помощью JavaScript:

<input type="hidden" name="hidden1" id="hidden1" />
<input type="hidden" name="hidden2" id="hidden2" />
<script>
document.getElementById("the_form").onsubmit = function(){
    document.getElementById("hidden1").value = document.getElementById("other-field1").value;
    document.getElementById("hidden2").value = document.getElementById("other-field2").value;
};
</script>
2 голосов
/ 22 октября 2009

Вам необходимо создать скрипт, который будет собирать данные из форм и вставлять их в единственную видимую форму. Будет отправлена ​​только одна форма, вы не можете отправить несколько форм. Вы можете создать несколько скрытых полей или создать одно скрытое поле в этой форме, затем использовать javascript для сбора всех данных из различных форм, затем создать строку JSON, установить значение скрытого и отправить.

Edit: Скажем, у вас есть один скрытый ввод, как это:

<input type='hidden' name='hiddenfield' id='hiddenfield' />

вы можете использовать JQuery для этого:

$('#hiddenfield').val('myvalue');

Получить значение из других форм так же просто, как вызвать $ ('# elementid'). Val ()

до отправки формы. Чтобы использовать JQuery, перейдите на веб-сайт jquery, загрузите библиотеку и создайте ссылку на нее (следуйте их руководству по установке).

1 голос
/ 22 октября 2009

Оберните всю страницу в тег формы (если это возможно) и используйте код на стороне сервера вместе с Javascript для обработки проверки вашего бизнес-правила.

своего рода решение для взлома, но оно должно минимизировать необходимость «взломов» Javascript в зависимости от уровня вашего навыка с javascript.

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