2012-03-08 72 views
9

このコードでは、ウィンドウを閉じようとしていますが、これは無視されたOnclickイベントです。OnClickとOnClientClickの両方を使用しているときにOnClickが動作しない

<script type="text/javascript"> 


      function GetRadWindow() { 
       var oWindow = null; 
       if (window.radWindow) oWindow = window.radWindow; 
       else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; 
       return oWindow; 
      } 

      function CloseDialog() { 
       GetRadWindow().close(); 

      } 

ASPXページ:

<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" 
       onclick="Button1_Click" OnClientClick="CloseDialog();return false;"/> 

誰も私が理由を見つけるのを助けることができる私のアプリケーションは、Button1_Clickイベントに入ることはありませんか?事前に おかげ

EDIT:HTMLは、あなたがonclientclickfalseを戻ってきているBUTTON

<input type="submit" id="Button1" onclick="CloseDialog();" value="Soumettre ce ticket" name="Button1"/> 
+2

return falseを削除してみてください。あなたのonClientClickから。これは恐らくオンクリックのためにイベントを控えているでしょう。 – dash

+0

クライアントに実際に何が届いているかを教えてもらえますか? – greg84

+0

'Button1'に対して生成された実際のHTMLで質問を更新できますか? – shanabus

答えて

13

This article種類の問題が説明されています。サーバーイベントをトリガーする場合は、JSでtrueを返す必要があります。それ以外の場合は、falseを返す必要があります。

はそして、それはまた、あなたがに基づいて偽UseSubmitBehavior =追加する必要があります次のようになります。OnclientClick and OnClick is not working at the same time?

これはあなたの生成されたHTMLが唯一持っていることをCloseDialog()とないのButton1 Clickへの呼び出しを見た後に特に明らかです。この変更は、あなたのonclickの最後につながります。

<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" 
      onclick="Button1_Click" OnClientClick="CloseDialog();" 
      UseSubmitBehavior="false"/> 
+0

私はちょうど戻りfalseを削除しました。 Onclientでクリックして追加しましたCloseDialog()関数内でtrueを返しますが、残念ながら動作していません – Slrg

+0

私の答えを更新しました。これは既に答えられているようです。 –

+0

それは動作します!助けてくれてありがとう! – Slrg

4

のために生成するので、イベントはポストバックの前に返されます。その結果、onclickは決して発火しません。

+0

+1それはボブだ! falseを返すと、レンダリングされた送信ボタンがASP.NETフォームをPOSTできなくなります。 – greg84

+0

downvoteを説明してください?これは正解です。 – Evert

+0

あなたの答えに同意する - あなたがあなたの答えを投稿した同じ時刻の周りにコメントしたので、私からの+1はランダムなdownvoteに対抗するはずです:-) – dash

6

私はこの問題に遭遇し、UseSubmitBehavior="false"を使用するとほとんどそのトリックはありませんでした。 OnClientClickコールが正しく設定されていることを確認してください。

私のコードはOnClientClick="return ValidateSearch();"を使用していましたが間違っています。それはちょうど

<asp:Button ID="keywordSearch" runat="server" Text="Search" TabIndex="1" 
OnClick="keywordSearch_Click" OnClientClick="if (!ValidateSearch()) { return false;};" /> 

ここSourceを参照してください(と彼らに感謝!言う)は、正しく設定されている場合は、OnClick機能は発生しません

をする必要があります。

0

私はちょうど同じ問題に遭遇しました。サーバー側であるenable="false"とクライアント側の「無効化」の間で混乱していると思います。

、サーバー側からEnabled = false;を適用する場合control.Enabled = "false";を使用してコントロールを有効にするには、サーバー側プロパティはcontrol.Attribute.Add("disabled","disabled");

のように、Attributeを適用すると同じではありません、あなたが実際には、完全にコントロールをオフにしていますそれが画面に表示されていても!次に、コントロールを右クリックして、InspectorまたはFireFlyを選択して確認します。何も表示されません。コントロールが「存在しない」ため、何も起こりません。

ただし、Attributeプロパティを適用すると、コントロールはサーバーとクライアントに表示され、ユーザーはそのコントロールを検査できます。

私がしたことは、ASPのデフォルト環境が設定されていることです。ネット側のコントロール(私の場合はasp:Button)と言って、Enabled="true"(または何も言わない、それはとにかくデフォルトだから)。

サーバー側では、PageLoad()にボタンが表示されます(私の場合はデフォルトでvisible="false"に設定されています)、適切なAttributeの値を追加します。

btnSEND.Visible = true; 
btnSEND.Attributes.Add("disabled", "disabled"); 

ボタンが有効になっていないその方法、それは、と私のプログラムの別の領域ではJavaScriptを使用して、クライアントに完全に「見えない」ではないのですが、私はそれを有効にしたりしないようにタイミングを制御します。

この方法でも、UseSubmitBehavior="false"を使用する必要はありません。

0

page_loadでは、trueを返してAdd.Atributeメソッドを使用してJavaスクリプト関数を渡します。最初にjavascript関数をロードします。ボタンのクリックイベントがロードされます

関連する問題