如何在新窗口中创建HTML表单

How to create HTML Form in a new window

本文关键字:创建 HTML 表单 窗口 新窗口      更新时间:2023-09-26

我有以下功能:

// open a new window. Create and submit form
function createSubmitForm(response) {
    var external = window.open('about:blank', 'external');
    var doc = external.document;
    var body = $('body', doc);
    // create a new form element
    var form = $("<form id='authForm'></form>");
    // set the form's attributes and add to iframe
    form.attr("action", response.action)
        .attr("method", response.method);
    form.appendTo(body);
    // create form elements;
    for (var i = 0, len = response.fields.length; i < len; i++) {
        var field = response.fields[i];
        if (field.name != "") {
            $("<input type='hidden'/>")
                .attr("name", field.name)
                .attr("value", field.value)
                .appendTo(form);
        }
    }
    // submit the form
    form.submit();
}

当我尝试执行它时,我得到一个"未指定错误"form.appendTo(body)

我在这里做错了什么?

试试这个:
请注意您的服务器上必须有一个空白页http://localhost/some-blank-page-on-your-server.php

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
</style>
</head>
<body>
</body>
<script>
(function($) {
$(function() {
    // open a new window. Create and submit form
    function createSubmitForm(response) {
        var external = window.open('http://localhost/some-blank-page-on-your-server.php', 'external');
setTimeout(function() {
        var doc = external.document;
        var body = $('body', doc);
        // create a new form element
        var form = $("<form id='authForm'></form>");
        // set the form's attributes and add to iframe
        form.attr("action", response.action)
            .attr("method", response.method);

        // create form elements;
        for (var i = 0, len = response.fields.length; i < len; i++) {
            var field = response.fields[i];
            if ( field.name !== "" ) {
                $("<input type='text'/>")
                    .attr("name", field.name)
                    .attr("value", field.value)
                    .appendTo(form);
            }
            $("<input type='submit' value='submit' />").appendTo(form);
        }
        // submit the form
        form.submit();
        body.append(form);
}, 1000);
    }
    createSubmitForm({
      action: 'http://www.example.com',
      method: 'get',
      fields: [{
        name: 'field1',
        value: 'some value'
      }]
    });
});
})(jQuery);
</script>
</html>

使用文档。当你想在一个新窗口中写的时候再写。你这样做的方式并不适用于所有的浏览器。

尝试使用jquery在附加

时定义表单

$(形式).appendTo(身体);

我认为更简单的方法是使用jquery UI dialog

我会在appendTo之前抛出一个警告(表单),以查看页面认为此时的表单变量是什么。

另一个帮助查明问题的方法是在firefox中加载firebug并使用它来调试问题。作为一个快速的测试,我将摆脱骆驼的情况下,虽然我之前有实例,即使它应该是骆驼的情况下,它只工作,当它是所有的小写。通常是在IE中。很傻,但这是一个快速检查。