2009-07-20 8 views
2

ポストバックに使用するボタンがASP.Netにあるusercontrolがあります。このボタンには、イベントを処理する前に実行されるいくつかのJavascript検証もあります。ASP.Net Javascriptのバリデーションを実行するとPostURLが機能しません

今日私は、ボタンのPostBackURLプロパティを設定して別のURLにポストバックしようとしました。しかし、それはうまくいかず、ページはそれ自体にポストバックし続けました。だから私は何らかの調査をして、それを見つけました。

  1. 別のURLへのポストバックは、ASP.NetのJavascriptで実装されています。
  2. 私は私の検証機能に

    OnClientClick =「リターン・検証()」 呼び出しを続ける場合は、ポストバックが発生しません。

  3. 検証関数の呼び出しを削除すると、ポストバックが正常に機能します。

これは、ボタンのマークアップが[検証]で表示される方法です。あなたは「リターン検証()」の呼び出しが欠落している、そしてそれはすべての違いを作っていることに気づくでしょう検証

<input type="submit" name="ctl00$cphMain$pra1$btnSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))" id="ctl00_cphMain_pra1_btnSubmit" style="width:80px;" /> 

なし

<input type="submit" name="ctl00$cphMain$pra1$btnSubmit" value="Submit" onclick="return validate();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))" id="ctl00_cphMain_pra1_btnSubmit" style="width:80px;" /> 

これを動作させるにはどうすればよいですか?

答えて

2

returnは、検証の結果に関係なく、WebForm_DoPostBackWithOptionsが実行されないためです。

あなたが(引用符なし)を試みることができる:

!validate() ? return false : WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false)) 

粗製のハックが、の上にあなたのためのthats Webフォーム、一つの大きなハック:それはのように終わるでしょう

"!validate() ? return false : " 

その方法別の

+0

OnClientClick="return validate();" 

を交換してください。どのように使用されているかについての仮定に依存していないので、ハックは少し少なくなります。 – tvanfosson

+0

右ソリューションに感謝します。 –

13

は、私はスタンドアロンで動作しますjavascriptのコードを好む

OnClientClick="if (!validate()) { return false; }" 
+0

ありがとうtvanfosson! –

+0

が合意した、これはもう少しの解決策です。 –

関連する問題