2016-04-07 9 views
0

<div id="roomTypeContainer">がクリックされたときに、データを取得するためにポストバックを実行します。
したがって、LinkButtonの中に入れてください。 divをクリックすると、ブラウザコンソールにエラーがあります。ASP.Net Webformsでポストバック操作を実行する方法

Uncaught TypeError: theForm.submit is not a function

リピータは、ユーザーコントロールである

ASCX:

<asp:Repeater ID="rpRoomTypes" runat="server" ItemType="Sitecore.Data.Items.Item" 
OnItemDataBound="rpRoomTypes_ItemDataBound" OnItemCommand="rpRoomTypes_ItemCommand"> 
    <ItemTemplate> 
    <sc:EditFrame ID="efRoomType" runat="server" > 
     <asp:LinkButton ID="lnkRoomType" runat="server" CommandName="cmd_RoomType"> 
     <div id="roomTypeContainer" runat="server"> 
      ..some html 
     </div> 
     </asp:LinkButton> 
    </sc:EditFrame> 
    </ItemTemplate> 
</asp:Repeater> 

UPDATE:私は、ブラウザのコンソールでエラーのリンクをクリックすると 、このコードは、コンソールに示されています:

<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['mainform']; 
if (!theForm) { 
    theForm = document.mainform; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); //error here 
    } 
} 
</script> 

上記のコードはSitecoreによって生成されたようです。 mainformは、aspxページのフォームのIDです。

はコンソールで同じスクリプトを実行し、ここでの結果 enter image description here

+0

フォームの名前を確認してください。ユニークでなければなりません。ページ上のいくつかの要素がフォームと同じ名前を持つ場合、このエラーが表示される可能性があります。 – Anton

+0

マスターページ(aspx)には、idが 'mainform'のフォームタグがあります。このUsercontrolにはフォームがありません – Qwerty

+0

theForm.submitが呼び出されている場所にコードブロックを投稿できますか? –

答えて

0

使っ名=「のMainForm」の代わりにID =「MainFormを」 document.forms [「何か」]はID名を使用して動作しますが、されていません

+0

'name = mainform'でも同じです。 – Qwerty

+0

はありますか?しかし、まだdocument.forms ['mainform']。コンソールでsubmit()は 'not a function'を返しますか? – Anton

+0

はい、そうです。それはまだ質問 – Qwerty

0

"Submit is not a function" error in JavaScript

"submit is not a function" means that you named your submit button or some other element submit. Rename the button to btnSubmit and your call will magically work.

When you name the button submit, you override the submit() function on the form.

は名前= "送信" またはID =の形で "提出" がないことを確認します。

0

リピータによって生成されたブラウザのHTMLコードを表示できますか?あなたのUserControl sc:EditFrameがiframeを生成し、このiframeにロードされたドキュメント(フォームを含まない)のコンテキストでLinkBut​​tonが動作すると思われます。

0

form.onSubmitは、サブミットイベントのイベントリスナーです。実行中にハンドラが設定されていない場合、form.onsubmit()はエラーをスローします。

0

あなたのユースケースは非常に曖昧です。 divをLinkBut​​tonの中に入れたいのですが、それもリピーターの中に入れたいのですが?それはクリック可能ですか?あなたはdivのクリックで警告をテストしましたか?

また、rpRoomTypes_ItemDataBoundメソッドとrpRoomTypes_ItemCommandメソッドも投稿してください。生成されたJSでこの行を見ると

1

var theForm = document.forms['mainform']; 

theFormは、ページのロード時に設定されたグローバル変数ですが、フォーム要素がまだその時点で作成されていないのだろうか(またはスクリプトの後に来ますブロック - それも問題を引き起こすだろう)。次に、関数がdoPostbackで実行されると、フォームが現在存在していても、フォームを参照する変数がまだヌルなので、theForm.submit関数は存在しません。

コンソールでは、フォームを入力してEnterキーを押し(コンソールに割り当てずに)、設定されているものを確認します。それがヌル/未定義の場合は、何が起こっているのか、その場合は、エラーを診断するためにさらに情報が必要です(フォームがまだ作成されていないなど)。

+0

と同じエラーを示していますこれは私の推測と同様に、フォームがまだjavascriptが実行された時点では存在しないかもしれません。 –

関連する問題