表单动态属性更改和提交不起作用

时间:2013-08-19 14:00:55

标签: javascript jquery html google-chrome firefox

我有以下代码:

HTML:

<form action="/" id="mainForm" method="get">
    <input type="text" name="val1" />
    <button id="cmdSubmit">Submit</button>
</form>
<button id="cmdSubmit2">Submit 2</button>

使用Javascript:

$("#cmdSubmit2").bind('click', function () {
    Submit2();
});

var Submit2 = function() {
    var form = $("#mainForm").clone();
    form.attr("action", "/testing");

    form.submit();
}

我要做的是使用javascript动态更改表单的action属性,然后将其提交(到另一个URL)。

我期望发生的事情(在JsFiddle中)是点击提交按钮应加载jsfiddle主页,点击Submit2按钮应该加载404页面,因为/testing网址没有存在。

这在chrome(28.0.1500.95)中工作正常,但在Firefox(23.0.1)或IE中不起作用(10.0.9200.16660)。

这些浏览器都没有在控制台中显示任何错误 - 我很难过。有什么想法吗?

JSFiddle

编辑:我确实必须克隆表单,忘了提及。此外,这在Safari(v5.1.7)中工作正常。

2 个答案:

答案 0 :(得分:1)

您需要以某种方式将其插入DOM:

function Submit2() {
    var form = $("#mainForm").clone();
    form.attr("action", "/testing");
    form.hide().appendTo('body');

    form.submit();
}

fiddle

适合我(FF 23.0)

答案 1 :(得分:0)

您不需要clone()表单。试试这个:

var Submit2 = function() {
    var form = $("#mainForm");
    form.prop("action", "/testing");    
    form.submit();
}

Updated fiddle