Как создать форму динамически, используя JavaScript? - PullRequest
17 голосов
/ 21 октября 2010

Я хочу создать невидимую форму в любом месте HTML-страницы динамически с использованием JavaScript, а затем автоматически отправить.
Я хочу создать форму, приведенную ниже:

<form name='myForm' method='post' action='http://www.another_page.com/index.htm'>
<input type='text' name='myInput' value='Values of my input'>
<input type='hidden1' value='Hidden value 1'>
<input type='hidden2' value='Hidden value 2'>
</form>

Я пытался использовать JavaScript ниже:

my_form=document.createElement('FORM');
my_form.name='myForm';
my_form.method='POST';
my_form.action='http://www.another_page.com/index.htm';
my_tb=document.createElement('INPUT');
my_tb.type='TEXT';
my_tb.name='myInput';
my_tb.value='Values of my Input';
my_tb.appendChild(my_form);
document.body.add(my_form,document.body.elements[0]);
document.my_form.submit();

а не работает? Как я могу это сделать? Пожалуйста, помогите.

Ответы [ 4 ]

25 голосов
/ 21 октября 2010

Вы добавляете элемент формы как дочерний элемент текстового поля.

my_tb.appendChild(my_form);

Должно быть

my_form.appendChild(my_tb);

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

Другая проблема - попытка ссылаться на форму как document.xxx означает, что xxx - это имя формы. Но все равно попробуйте

my_form=document.createElement('FORM');
my_form.name='myForm';
my_form.method='POST';
my_form.action='http://www.another_page.com/index.htm';

my_tb=document.createElement('INPUT');
my_tb.type='TEXT';
my_tb.name='myInput';
my_tb.value='Values of my Input';
my_form.appendChild(my_tb);

my_tb=document.createElement('INPUT');
my_tb.type='HIDDEN';
my_tb.name='hidden1';
my_tb.value='Values of my hidden1';
my_form.appendChild(my_tb);
document.body.appendChild(my_form);
my_form.submit();
2 голосов
/ 09 декабря 2014

Вы также можете сделать ответ Саурабха Чаухана, но без добавления динамического элемента в тело Это решение является динамическим.

    var myform = document.createElement("form");
    myform.action = "myForm.aspx";
    myform.method = "post";


    product = document.createElement("input");
    product.value = "value";
    product.name = "name";

    myform.appendChild(product);
    myform.submit();
2 голосов
/ 23 января 2014
              var myform = document.createElement("form");

                product = document.createElement("input");
                product.value = JSProduct;
                product.name = "Product";
                myform.action = "myForm.aspx";
                myform.method = "post";
                form1.appendChild(product);
                document.body.appendChild(form1);
                form1.submit();

Это создаст форму, которая будет иметь дочерний элемент product («Тип ввода»), вам необходимо добавить дочерний элемент к родительскому элементу, такому как product, чтобы сформировать и сформировать тело и документ корневого элемента DOM, и вы можете добавить атрибут Форма как действие и метод это сделает ваше дело.

1 голос
/ 21 октября 2010

Вы можете попробовать простой подход использования:

<script type="text/javascript">document.write("[the form's HTML]");</script>

внутри тела где-нибудь.Затем, чтобы отправить форму, добавьте:

<script type="text/javascript">document.my_form.submit();</script>

Это предотвращает ошибки при программном создании DOM.

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