我無法讓jQuery的.submit()在IE或Firefox中工作,當我將表單作爲jQuery對象的文本傳遞。
例如,下面的代碼在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,我通過獲得()調用到ASP .NET .ashx的處理程序構建<form>
。我試圖儘量減少對<form>
及其內容的暴露。
$.get('./ConstructForm.ashx', function (data) { $(data).submit(); })
.fail(function() { alert('fail!'); });
我一個更安全的方式來做到這一點當然歡迎建議,但是這可能會是一個不同的問題的主題。
~~~
對於它的價值,我的做法最初是在此基礎上:https://stackoverflow.com/a/2054741/1530187
我試圖做到這一點使用一個結構化的字符串爲jQuery對象,而不是現有的元素,儘量減少用戶在提交之前或通過瀏覽器提交之後檢查表單的能力。
它必須在它工作之前成爲DOM的一部分。否則,它只是一個片段不附加。 – prodigitalson 2013-02-19 23:29:31
這可能是出於安全原因或其他原因,但我想IE/FFX將不會提交不在當前文檔中的表單。您可以將它追加到'
',然後立即提交。 – 2013-02-19 23:30:31'$('
')'*創建*表單;它不會將其添加到文檔中。在附加之前,'submit()'處理程序不會/不能做任何事情。只有用戶可用時才能提交。而且,只有成功的表單元素被提交給服務器;由於您的表單不包含任何元素,因此無法提交。所以...希望你只是選擇了一種非常糟糕的方式來表示你的用例。你真的得到了什麼? – 2013-02-19 23:30:45