これにはいくつかの質問/回答があります here 、 here および here と他の場所にありますが、すべてJQuery固有であるように見え、適用されていないようですthis(たとえば、私は[〜#〜] not [〜#〜]で新しいFormオブジェクトを作成していますが、これはドキュメント内の既存のフォームです。また、私はJQueryをまったく使用していない[〜#〜] [〜#〜])。
IE7との互換性のため、送信前に変更する必要があるフォームがあります。フォームからすべてのBUTTON
タグを取り除き、非表示フィールドを追加する必要がありますが、これはすべて既存のHTMLページの既存のフォームにあります。このコードはIEおよびChromeで正常に機能しますが、Firefoxでは機能しません(バージョン23および24の両方がテスト済み))。
_ buttonClickFunction(formName, buttonObject) {
var formObject = document.forms[formName];
var i = 0;
// Strip out BUTTON objects
for (i=0;i<formObject.length;i++) {
if (formObject[i].tagName === 'BUTTON') {
formObject[i].parentNode.removeChild(formObject[i]);
i--;
}
}
// Create new field
var newField = document.createElement('input');
newField.type = 'hidden';
newField.id=buttonObject.id;
newField.name = buttonObject.name;
if (buttonObject.attributes['value'] != null) {
newField.value = buttonObject.attributes['value'].value;
} else {
newField.value = buttonObject.value;
}
// Submit form
formObject.appendChild(newField);
document.forms[formName].appendChild(newField);
document.forms[formName].submit();
}
_
document.forms[formName].submit()
に加えて、formObject.submit()
も試してみました-両方ともChrome=で機能しますが、Firefoxでは両方とも失敗します。これが機能しない理由-私はJSをたどって、document.forms[formName].submit()
executeが実行されるのを見ました-例外は表示されませんが、サーバーには何も送信されません。
Firefoxがこのフォームを送信しない理由と、それを修正する方法を誰かが特定できますか?
Firefoxは、フォームを送信するときに、少なくとも送信ボタンが利用可能であることを期待しています。つまり、次のようなものがあるはずです。
<button type="submit">Click me</button>
または:
<input type="submit" value="Click me" />
コードで最初のボタンを使用すると、機能しません(フォームを送信する前にすべてのボタンを削除するため)。 2番目のオプションを使用すると、Firefoxでも機能します。このフィドルでわかるように、 http://jsfiddle.net/q9Dzc/1/
form.submit()
がFirefoxでは機能せず、他のブラウザでは機能する場合も、同様の動作がありました。フォーム内のすべてのボタンにtype="button"
が含まれていることを確認してください。
後でページの場所を変更/再読み込みしてFirefoxを送信する際に問題が発生する場合は、リダイレクトコードを$ .postコールバックに配置する必要があります。
$(".form").submit(function(e){
e.preventDefault();
$.post("submit.php", {data: textData}, function(){
history.go(-1);
});
return false;
});