передача переменных в форму с помощью onclick - PullRequest
3 голосов
/ 07 февраля 2012

Я новичок в javascript и пытаюсь начать несколько проще. Можно ли создать функцию, которая содержит объект формы, который может быть заполнен событием onclick?

Прямо сейчас у меня есть страница с 7 кнопками, каждая кнопка является отправкой для отдельной формы, все они ссылаются на один и тот же php-файл на обратной стороне моего сайта, где они обрабатываются. Я хотел бы как-то создать одну единственную форму, возможно, в функции javascript, которая будет принимать переменные от кнопок при нажатии, а затем отправлять форму в мой php-скрипт. технически он будет функционировать так же, как и сейчас, с 7 различными формами, по одной для каждой кнопки, но, надеюсь, сократит код.

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

пример:

<script type="text/javascript">

function form_variables(opt1,opt2,opt3){

   <form name='mySelectionForm' action='form.php?action=form_action' method='post' enctype='multipart/form-data'>
    <input type='hidden' name='number' value='" + opt1 + "' />
    <input type='hidden' name='id' value='" + opt2 + "' />
    <input type='hidden' name='option' value='" + opt3 + "' id='options' />

    </form>;

  formObject.submit();
}

Тогда это будет заполнено событием onclick, подобным этому.

<a href="javascript: void(0);" onclick="form_variables('9','1','6');" title="submit_button1" value="Button 1" class="cssButton">My Selection</a>

Ответы [ 4 ]

3 голосов
/ 07 февраля 2012

Вы на правильном пути. Вместо того, чтобы динамически генерировать форму каждый раз, ваш JavaScript может заполнить значения скрытых входных данных и изменить действие вашей формы. Итак, учитывая это в вашем HTML:

<form name="mySelectionForm" id="mySelectionForm" action="form.php?action=form_action" method="post" enctype="multipart/form-data">
  <input type="hidden" name="number" value="" id="number" />
  <input type="hidden" name="id" value="" id="id" />
  <input type="hidden" name="option" value="" id="options" />
</form>

Ваш JavaScript может выглядеть так:

function postForm(number, id, option, action) {
    var form = document.getElementById('mySelectionForm');
    form.setAttribute('action', 'form.php?action=' + action);
    document.getElementById('number').value = number;
    document.getElementById('id').value = id;
    document.getElementById('option').value = option;
    form.submit();
}
0 голосов
/ 07 февраля 2012

Если я вас правильно понимаю, у вас есть 7 форм с 7 кнопками и вы хотите использовать сценарии, чтобы при отправке одной из форм вы копировали значения в другую форму, а затем отправляли ее. Я не вижу, как это «сократит код».

Мне кажется, что это увеличивает объем кода - формы вообще не нуждаются в сценариях. Вы можете просто использовать одну форму с 7 кнопками отправки, а затем отсортировать данные на сервере по нажатой кнопке.

Редактировать

Если вы используете одну форму с несколькими кнопками отправки, например:

<form action="form.php?action=form_action">
  <input name="foo" value="bar">
  <input type="submit" value="Submit 1" name="Submit 1">
  <input type="submit" value="Submit 2" name="Submit 2">
</form>

тогда, когда будет нажата первая отправка, сервер получит:

...?foo=bar&Submit+1=Submit+1

и при нажатии второй кнопки получится:

...?foo=bar&Submit+2=Submit+2

итак: одна форма, несколько кнопок отправки, нет сценария, сервер знает, какая из них была нажата.

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

0 голосов
/ 07 февраля 2012

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

0 голосов
/ 07 февраля 2012

Просто создайте каждую ссылку следующим образом:

<a href="form.php?action=forum_action&id={ID}" class="cssButton">My Selection</a>

Замена {ID} на число.

Затем в вашем PHP-файле используйте:

<?php
switch($_GET['id']) {
    case 1:
        $var['number'] = 9;
        $var['id'] = 1;
        $var['option'] = 6;
        break;
    ...
}
?>

И так для каждого случая.Это гораздо лучшая система, так как она поддерживает HTML в чистоте и устраняет необходимость в JavaScript.

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