jQuery $('<form> </form>

时间:2013-02-19 23:27:39

标签: jquery submit

当我将表单作为jQuery对象的文本传递时,我无法让jQuery的.submit()在IE或Firefox中工作。

例如,以下代码适用于Chrome和Safari,但在IE和Firefox中没有任何反应 - 没有错误,没有任何错误:

$('<form id="frm" action="http://www.stackoverflow.com" method="POST"></form>')
    .submit();

注意:上面的“http://www.stackoverflow.com”和空表只是一个例子。在我的应用程序中,我的表单有一个“action =”的合法URL,它接受我在动态构造的表单中指定为隐藏控件的POST数据。

如果我将构造的表单加载到html中的元素中然后执行$('#frm').submit(),它就可以工作;但是,我宁愿不去那条路。

这是已知/预期的行为还是我做错了什么?

~~~

为了响应@DavidThomas,我通过.get()调用ASP .NET .ashx处理程序来构造<form>。我试图尽量减少对<form>及其内容的曝光。

$.get('./ConstructForm.ashx', function (data) { $(data).submit(); })
    .fail(function () { alert('fail!'); }); 

我当然欢迎有关更安全的方法的建议,但这可能是另一个问题的主题。

~~~

对于它的价值,我的方法最初基于:https://stackoverflow.com/a/2054741/1530187

我正在尝试使用jQuery对象的构造字符串而不是现有元素,以尽量减少用户在提交之前或通过浏览器提交后检查表单的能力。

1 个答案:

答案 0 :(得分:0)

您应该将表单放入HTMl,代码如下

var yourform = $('<form id="frm" action="http://www.stackoverflow.com" method="POST"></form>');

yourform.attr('target', '_blank');  //open in a new tab
yourform.appendTo($(document.body)); // put your form into html
yourform.submit();

适用于IE和Firefox。