2011-12-22 23 views
0

状況は次のとおりです。asp.netフォームが送信取得されていない

私はページ上のすべてのコントロールを無効にしたい

がの提出で、(おそらくオーバーレイのdivを使用して)フォームは、ページがまだポストバックを処理しているまで、ユーザーが他のボタンをクリックできないようにします。したがって、私はフォームの "onsubmit"イベントを使用して、同じことを行うjavascript関数を呼び出しました。しかし、今ではその関数が呼び出されていますが、フォームは全くポストされません。私は「真実を返す」を使って試してみました。私のJavaScript関数の最後の行として、まだフォームが投稿されません。
これは私のjavascript関数である:

function DoThis() 
    { 
     alert('this form is about to be submitted...'); 
     return true; 
    } 

、これが私のformタグである:

<form id="form1" runat="server" onsubmit="DoThis();"> 

何がここで間違っています?また、私の目的を果たす他の方法があるかどうかを教えてください。ありがとう。

EDIT:updatepanelsにはすでにこの動作を有効にする機能があるので、ここではajax呼び出しを参照していません。私はこの機能をページ全体に適用したいのですが、アップデートパネルの外側にあるボタンをクリックしてajaxコールだけでなく、フルポストバックにすることもできます(ユーザーは通常2〜3ボタンをクリックするのに十分な時間があります。ページのgetはリダイレクトまたはリロードされます)。 'DoThis' 関数の追加で

+0

IE8とFF8.01でこれをテストしています。より良いアプローチは、送信ボタン自体のonclientclickにjsイベントをアタッチし、そのイベントのオーバーレイdivを表示することです。 –

+0

フォームはポストバックされますか?私の場合は、そうではありません。私もIE8を使っています。 – MrClan

+0

はいそうです。ウルのページに更新パネルがありますか? –

答えて

4

、私は最終的に私は私のformタグに追加するには、「戻る」のキーワードが欠落していたことを考え出しました。だから、私は私のようformタグを修正:

<form id="form1" runat="server" onsubmit="return DoThis();"> 

愚かなものは、多くの時間を食べます。たぶん、体験中です。

+1

それは私の問題を解決していませんが、まだボタンイベントを発生させていません。 – Shagglez

+0

関数から "true"/"false"を返しましたか? – MrClan

+0

はい、私はしました。最終的に私はjQueryを使ってフォームをフォームに添付しましたが、以前は失敗していました。私は、私が今でも削除したベースページのコードビハインドからonSubmitスクリプトを添付しようとしていることも、私と何か関係があったと思います。 – Shagglez

-1

'this.submitは()'

function DoThis() { alert('this form is about to be submitted...'); this.submit(); } 私はこれをテストしたhaventは。チェックしてください。

JQueryのようなjsライブラリを使用していますか?

+0

did not work.Error message says ** this.submit()は関数ではありません。これはウィンドウオブジェクトを参照しています。**はい、私はjQueryを使用しています。 – MrClan

4

あなたは道の下にいずれかを試してみてくださいになります。

<form id="form1" runat="server" onsubmit="return DoThis();" > 

OR

function DoThis() 
    { 
     alert('this form is about to be submitted...'); 
     this.submit(); 
    } 
+0

上記のコメントは同じです。それはうまくいかなかった。 – MrClan

0

これは私のために働いています。ヒット-N-一連の試験を通して

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Untitled Document</title> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

    <script> 

     function testSubmit(form) { 
      form.submit(); 
     } 

    </script> 

</head> 
<body> 

    <form action="http://www.yahoo.com" id="myForm" onsubmit="testSubmit(this)" > 
    First name: <input type="text" name="firstname" /><br /> 
    Last name: <input type="text" name="lastname" /> 
    <input type="submit" value="Submit" name="submit" /> 
</form> 

+0

このケースは、送信ボタンが1つのみの場合にのみ機能します。ポストバックが発生する多くのポストバック作成元(グリッドビューの行など)があります。しかし、** form.submit **を実行すると、現在のページが送信されます(つまり、**は単にリロードされます**)。 – MrClan

0

もちろんonsubmitはasp.netで動作しません。

非常に簡単な方法で解決しました。私たちは、このような形を持っている場合

<form method="post" name="setting-form" > 
    <input type="text" id="UserName" name="UserName" value="" 
     placeholder="user name" > 
    <input type="password" id="Password" name="password" value="" placeholder="password" > 
    <div id="remember" class="checkbox"> 
    <label>remember me</label> 
    <asp:CheckBox ID="RememberMe" runat="server" /> 
    </div> 
    <input type="submit" value="login" id="login-btn"/> 
</form> 

あなたは今、フォームのポストバックの前にそのイベントを取得キャッチし、ポストバックからそれを停止し、あなたがこのjqueryのを使用したいすべてのAJAXを行うことができます。

$(document).ready(function() { 
      $("#login-btn").click(function (event) { 
       event.preventDefault(); 
       alert("do what ever you want"); 
      }); 
});