2013-04-24 5 views
7

私はインターネットを(SOを含めて)精査しています。私の状況で私を助けてくれるものはありません。私は皆さんから助けを得ることができます。

基本的に、タイトルのように、.submit()はIEでは起動しません。他のすべてのブラウザは正常に動作しますが、IE(8,9,10まで)では送信を開始しません。

 <form id="@formId" method="post" enctype="multipart/form-data" action="@Url.Content("/ActivityEvent/SubmitCheckpointApproval")"> 
      <table id="checkpoint-approval" style="width:100%" align="center" class="noBorders"> 
       <tr> 
        <td style="width: 520px;"> 
         <div> 
          Please enter any relevant comments: 
         </div> 
         <div style="margin: 10px 0;"> 
          <textarea class="wysiwygSimple" rows="4" cols="60" name="comment" id="[email protected](actTplId)"></textarea> 
         </div> 
        </td> 
        <td style="border: 0; padding-top: 30px; text-align: center; width:70px;"> 
         <img alt="key" src="/Content/Images/checkmarkInCircle.png" align="middle" style="width: 100px; 
          height: 100px;" /><br /> 
         <p style="text-align: left; margin-top: 10px;"> 
          The notes and resources entered here are shared with the student.</p> 
        </td> 
       </tr> 
       <tr> 
        <td colspan="2" class="ResourcesUploadList"> 
         Suggest some resources:<br /> 
         <div style="float: left;"> 
          <input class="Multi" type="file" name="resourceFiles[]" /></div> 
         <div style="float: left; margin-left: 10px; font-style: italic;"> 
          (click browse for each file you want to upload)</div> 
         <div style="clear: both;"> 
         </div> 
        </td> 
       </tr> 
       <tr> 
        <td style="border: 0; text-align: center; width:600px;" colspan="2"> 
         @if (hasAdminRights) 
         { 
          <input type="button" @Html.Raw(btnStyle) class="activityApprove" name="actionApprove" id="actionApprove" value="Tutor Completion Approval" title = "Approves all activities preceding this checkpoint as complete." onclick="Activity.submitCheckpointApproval('@(formId)', '@(ActivityEvent.EVENT_TYPE_APPROVED)',@(actTplId));" /> 
          <input type="button" @Html.Raw(btnStyle) class="activityAttention" name="actionAttention" id="actionAttention" value="Needs Attention" title = "Notifies the student that this project needs additional work prior to completion." onclick="Activity.submitCheckpointApproval('@(formId)', '@(ActivityEvent.EVENT_TYPE_NEEDS_ATTENTION)',@(actTplId));" /> 
         } 
         <input type="button" @Html.Raw(btnStyle) value="Cancel" title = "Close this." onclick="javascript:$('#[email protected](actTplId)').toggle();" /> 
        </td> 
       </tr> 
      </table> 
     </form> 

ボタンがクリックされています:

Activity = { 

submitCheckpointApproval: function (formId, activityEventStatusId, activityTemplateId) { 
    var resultsDivId = $("#checkpointResults" + activityTemplateId); 
    Activity.showCheckpointLoading(resultsDivId); //Just shows a spinner for loading 
    $("#checkpoint-activityEventStatusId-" + activityTemplateId).val(activityEventStatusId); 
    $("#" + formId).submit(); //PROBLEM IS HERE?? 
}, 
... 
}; 

そして最後に、コントローラ:

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult SubmitCheckpointApproval() 
     //Save everything in here 
    } 

IEでのデバッグ、私が取得する。ここ

は、ビューのコードですjsの.smit()行をそこから実行してください。それ以前のものはすべて正常に動作しますが、.submit()が来ると何もしなくなります。何もjavascriptのエラーは、何もコンソールの何も問題の兆候はありません。 他のすべてのブラウザでは、.submit()が正常に起動し、コントローラは呼び出されたメソッドにブレークします。

IEでこれがなぜ起こっているのかについての考えはありますか?私は誰かがこれを前に出会ったと確信しています!助けてください、私はすべての午後私の机から私の頭を叩いている!

ありがとうございました!

+0

前に、その行を置くあなたはすべてのエラーを得るのですか? –

+0

これを試すことができますか? '$( '#' + formId).trigger( 'submit'); ' –

+0

@Barry:負の値です。 IEに変更はありません。 – SlackerCoder

答えて

9

jQueryで$.trigger()関数を使用するとよいでしょう。

あなたが.submit()を呼び出している方法と同様に、それを起動します。

$('#' + formId).trigger('submit'); 

幸運を!

また

<input type="submit" value="Submit" /> element. 

1を追加し、CSSでそれを隠して試してみてくださいが存在しない場合、フォームが適切に提出しませんIEのバグがあります。

+0

jQueryのバージョンに応じて、 '.submit()'は '.trigger()'のラッパーです –

+3

送信ボタンがあることを確認しました(コピー/ペーストのクリーンアップで削除しなければなりません) '.submit()'を '.trigger()'に変更しても何も変更されませんでした。 IEはまだそこに座っていて、それについて「考える」。 – SlackerCoder

+0

フォームに送信ボタンがありますか? –

0

あなたはfileuploadコントロールまたはその非表示を直接操作していて、別のボタンコントロールでトリガー/呼び出しを行っていると教えてください。 実際に私は同じ問題を抱えていました。私のクライアントは、ファイルアップロードコントロールとして機能するファンシーなボタンを表示することを望んでいました。そこで、ボタンとファイルアップロードコントロールを可視性falseで追加し、ボタンクリックでファイルアップロードイベントをトリガーし、jqueryの助けを借りてファイルのパスを取得してデータベースに保存していました。あなたが説明したようにフォームがIEで提出されなかったので、すべてがIE以外のすべてのブラウザで完璧に動作していました。本当に頑張った後、解決策と解決策が見つかりました。ファイルアップロードコントロールを示し、その位置を設定してボタンの上に正確に配置し、css opacity:0を適用しました。したがって、ファイルのアップロードは不透明度0のために表示されませんが、実際にファンシーボタンをクリックすると、ボタンの上にファイルアップロードがクリックされます。 このソリューションの後、すべてのブラウザで魅力的なように動作します。これがあなたにも役立つことを願っています。

4

あなたが送信したいフォームの中に入力サブミットを作成し、ボタンをJqueryでクリックすることができます。

IEではうまく動作します。

例えば

:私は、同様のエラーが発生しました

$(".HiddenBtn").click(); 
17

<form id="@formId" method="post" enctype="multipart/form-data" action="@Url.Content("/ActivityEvent/SubmitCheckpointApproval")"> 
<input type="submit" class="HiddenBtn" /> 
</form> 

とJS。私の解決策は次のとおりです。

DOMのdivにJSフォームを追加します。そうすれば、IEはそれがあることを知っていて、それを送信できます。

あなたは次のようにsubmitにあるボタン/入力のタイプを設定する必要があり、それは

+4

+1を追加することで、IE 11での問題を修正しました。これが私のために働いた唯一の答えです。 – Nolonar

+0

+1これも。なぜ答えが正しいのか分かりませんが、これは実際に働いたものです。 – Overcode

+0

それは私のために働いた唯一のものですが、私はボディにそれを追加しました(これはdivに同じ効果をもたらします)。私はそれがセキュリティ上の問題だと思う... –

0

を役に立てば幸い:

<button type="submit">Submit</button>

<input type="submit" value="submit">Submit</button>

0

私はIE 10で、同じ問題を抱えていたし、私の場合、解決策は次のコードで最初にフォームを追加することでした:

document.documentElement.appendChild(form); 

私は右の機能を提出

form.on("submit", function (event) { 
      event.preventDefault(); 
...more code 
)} 
関連する問題