web-dev-qa-db-ja.com

JavaScriptの「送信は関数ではありません」エラー

このコードで何が問題なのか誰にも教えてもらえますか? JavaScriptでフォームを送信しようとしましたが、「。submit is not function」というエラーが表示されます。コードの詳細については、以下を参照してください。

<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input onclick="submitAction()" id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

私もこれを試しました:

<script type="text/javascript">
    function submitAction()
    {
        document.forms["frmProduct"].submit();
    }
</script>

どちらも同じエラーを表示します:(

232
Jin Yong

submitは関数ではありません

は、送信ボタンまたはその他の要素submitに名前を付けたことを意味します。ボタンの名前をbtnSubmitに変更すると、呼び出しは魔法のように機能します。

ボタンにsubmitという名前を付けると、フォームのsubmit()関数をオーバーライドします。

639
epascarello
<form action="product.php" method="post" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">

document.getElementById("submit_value").onclick = submitAction;

function submitAction()
{
    document.getElementById("frmProduct").submit();
    return false;
}
</script>

編集:私は誤ってIDの周りを交換しました

11
Chad Grant

同じ名前の別のフォームがないことを確認し、フォームにname = "submit"またはid = "submit"がないことを確認してください。

7
gopeca

name="submit"を変更する機会がない場合は、次の方法でもフォームを送信できます。

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
6
Terbiy

マスターページでMVCアプリケーションを作成しているときにも同じ問題が発生しました。上記のように「submit」という名前の要素を探してみましたが、そうではありませんでした。

私の場合、ページに複数のタグが作成されたため、正しいフォームを参照する際に問題が発生しました。

これを回避するには、使用するフォームオブジェクトをボタンで処理します。

onclick="return SubmitForm(this.form)"

そしてjsで:

function SubmitForm(frm) {
    frm.submit();
}
5
Quangahh

フォーム要素にsubmitという名前を付けると、submitプロパティが単純にシャドウされます。 submitという名前のフォーム要素がないことを確認してください。submit関数に問題なくアクセスできるはずです。

2
aeid

このトピックにはすでに多くの答えがありますが、私にとって最もうまく機能した(そして最も簡単な-1行!)ものは、2013年4月21日からのニールE.ピアソンによるコメントの修正でした。

送信ボタンが#submitのままになっている場合は、別のフォームインスタンスのsubmit()メソッドを盗むことで回避できます。

彼の方法への私の修正、および私のために働いたもの:

document.createElement('form').submit.call(document.getElementById(frmProduct));

2
jlemley

実際、ソリューションは非常に簡単です...

元の:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct"
enctype="multipart/form-data">
    <input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">
</form>
<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

溶液:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct" 
enctype="multipart/form-data">
</form>

<!-- Place the button here -->
<input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>
2
Zurc Soirrab

可能な解決策 -
1.submitとしてname/idを持つ他の要素がないことを確認してください。
2。関数をonClick = "return submitAction();"として呼び出してみてください
3 .document.getElementById("form-name").submit();

1
Ramki

私の解決策は、ボタンの「フォーム」属性を設定することでした

<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>

またはjs:

YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name");
YOURFORMOBJ.submit();
0

このコードを使用する必要があります:

$(document).on("ready", function () {
       
        document.frmProduct.submit();
    });
0
AnilSengul

私が使ったのは

var enviar = document.getElementById("enviar");
enviar.type = "submit"; 

他のすべてが機能しなかったからです。

0
compraspro.com