2017-11-16 43 views
0

私のページには2つのラジオボタンのグループがあります。ラジオボタン2をクリックすると、検索ボタンがアクティブになります。ユーザーがこの検索ボタンをクリックすると、jQuery .ajaxコールを使用してデータが検索され、jqGridに表示されます。OnClientClick(またはHTMLのonclick)がasp:Buttonのために存在しない= Enabled = falseを使用する場合

起動時に検索ボタンを無効にする必要があります。無効にすると、ユーザーがクリックすると何も起こりません。

ボタンは、ASPのボタンであるとして、私は次のように有効に使用します。ここでは

<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" Enabled="false" OnClientClick="return SearchAccessCode()" /> 

は、ラジオボタングループのトグルを処理/検出するためのコードです:

$('input[name$=radioGroup]').change(function() { 
    if ($('input[name$=radioGroup]:checked').val() == "rbFirst") { 
     $('#<%=btnSearch.ClientID%>').prop('disabled', true); 
    } 
    else { 
     $('#<%=btnSearch.ClientID%>').prop('disabled', false); 
    } 
} 

私は私のページをデバッグするとき、後2番目のラジオボタン(rb秒)をクリックすると、検索ボタンが有効になります。私はそれをクリックして何も起こらない!私は生成されたHTMLをチェックし、それが他のボタンと異なることを確認します。それに関連するonclick()はありません!ウェブから

<input type="button" name="ctl00$MainContent$btnSearch" value="Search" id="MainContent_btnSearch" disabled="disabled" class="aspNetDisabled" /> 

、私はEnabledはHTMLでdisabledにtransatedされることを知っています。だから私はEnableddisabledに置き換えます。

<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" Disabled="True" OnClientClick="return SearchAccessCode()" /> 

は、生成されたHTMLを開き、それが他のASPボタンと同じである見つけます。意味:それはonclick()を持っています。もちろん、検索ボタンを押すと、実際に検索機能が実行されます。

<input type="button" name="ctl00$MainContent$btnSearch" value="Search" onclick="return SearchAccessCode();__doPostBack(&#39;ctl00$MainContent$btnSearch&#39;,&#39;&#39;)" id="MainContent_btnSearch" Disabled="True" /> 

私は助けることができなかったが、なぜを依頼します。 ASP.NETページにJavascriptを挿入できるので、Enabled="false"(Microsoftの方法)を使用してボタンを無効にすると、JavaScriptを使用してボタンを有効にすることができます。しかし、この時点では、ボタンとonclick()が指す関数との間の接続が失われます!

+0

なぜ機能を持っていますか?それはとにかく無効になります - 有効にすると、それは機能を返します – Marco

+0

ボタンを有効にした後、ボタンは何もしません。 (私はより多くの情報を与えるために私の質問を編集しました) – user3454439

+0

私の例では、ボタンはonclickイベントを期待どおりにトリガーします。最初は、複数の部分的なポストバックの後に、同様に。 javascriptエラーについては、ブラウザの開発コンソールを確認してください。また、html属性 'disabled'を使用すると、サーバ上で有効にすることはできません。 – Marco

答えて

0

これはデフォルトの動作です。これはボタンが無効になっていて機能していないためです。再度有効にすることを、ポストバックをトリガーとボタンにOnClientClickを追加します。

<asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" Enabled="false" OnClientClick="console.log('btnSearch onClientClickEvent');" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> 
     </Triggers> 
    </asp:UpdatePanel> 
    <asp:Button ID="Button1" Text="Toggle Search Button" UseSubmitBehavior="false" runat="server" OnClick="Button1_Click" /> 

は.cs:

protected void Button1_Click(object sender, EventArgs e) => btnSearch.Enabled = !btnSearch.Enabled; 

あなたがマークアップとしてOnClientClickイベントを維持したい場合は、ボタンが無効になっていてもあなたはJavaScriptを使用しなければならないので、ポストバックがトリガーされません。

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

をそれとも、述べたように、ちょうどdisabled属性を使用します。

<asp:Button ID="btnSearch" Text="Search" UseSubmitBehavior="false" runat="server" disabled OnClientClick="console.log('btnSearch onClientClickEvent');" /> 
+0

(Enabled = "false" 'を使って)デフォルトの動作が気に入らないのです。有効にするためにJavaScriptを使用するとどうなりますか?私は 'OnClientClick'関数にアクセスする方法がありません。私は実際にボタンから 'Enabled'を削除します。私は以下のJavaScriptを持っています: '$(document).ready(function()#$% 'btnSearch.ClientID%>')prop( 'disbled'、true);' OnClientClick()**および**起動時にボタンが無効になっています – user3454439

+0

これは問題ありませんが、私の答えにはコメントではなく、あなたの質問にはなぜコメントしていますか?あなたの質問は、それが動作するような振る舞いについてのものでした。今は特定の問題です。あなたの心を作りましょう。何を質問したいのですか。特定の問題なしで一般的な質問をすると、説明と検証可能な例 – Marco

関連する問題