2016-06-29 10 views
0

正常なJS検証関数(OnClientClickのすべての点で検証済み)があります。 OnClientClickによって呼び出されると、必要なフィールドがすべて設定されているかどうかをチェックし、送信ボタンを無効にして、OnClientClickに正しい真偽チェックを返します。ASP.NET OnClick/OnClientClick - 送信ボタンが無効になっていると壊れています

問題はボタンを無効にすることです。ページは送信され、再ロードされますが、OnClickイベントは発生しません。ヒント:

document.getElementById("<%=btnSubmit.ClientID %>").disabled = true; 

コードでは、OnClickイベントを発生させることができます。

I直接OnClientClickに

this.disabled=true; 

を挿入、ならびに偽UseSubmitBehavior =を使用して試みました。

ボタンが無効なときにOnClickイベントが発生しないのはなぜですか?

+1

通常の 'OnClick'機能が実行されないことを... – Mivaweb

+1

あなたがこの記事で示唆されているように、ボタンを無効にするには、' setTimeout'を使用することができます。http:// stackoverflowの。 com/questions/37955604/disabled-button-doesnt-submit-postback-in-updatepanel/37955693#37955693。 – ConnorsFan

+0

@ConnorsFan(setTimeoutを使用して)によって提供されるソリューションは、私の問題を解決したようです。ボタンをクリックした後にボタンが無効になっているのはどうして重要なのか分かりません。説明はいいだろうか? – SlowCoder74

答えて

0

二つのこと:

1は '無効' 属性が設定されていないことを確認してください。お電話の場合は実行することができます

document.getElementById("<%=btnSubmit.ClientID %>").removeAttribute('disabled'); 

2のOnClickポストバックして属性を削除してください:

var button = document.getElementById("<%=btnSubmit.ClientID %>"); 
window.location.href = button.getAttribute("href"); 

は、基本的には、それがクリック時には、サーバ側メソッドであるとして、要求を送信するためにブラウザを強制します。

0

ボタンをonClickイベントを含むdiv要素でラップするだけで済みます。ボタン自体が無効になっていても起動するはずです。唯一の欠点は、コードビハインドからイベントをボタンに直接割り当てることができないことです。 あなたの質問から、ボタンが有効であるかどうかにかかわらず、onClickイベントが常に発生するように見えます。

0

次のsetTimeout()コードを使用して、hereという問題を解決しました。答えはConnorsFanです。ボタンが無効になっている場合

function Control_Enable(controlId, enable) { 
    setTimeout(function() { 
     var ctrl = document.getElementById(controlId); 
     ctrl.disabled = !enable; 
    }, 10); 
} 
関連する問題