6

html code:

<asp:Button runat="server" ID="btnTest" Text="Test" OnClick="btnTest_Click" />

Jquery Code:

$('[id$=btnTest]').click(function(){
   $('[id$=btnTest]').attr('disabled', 'true');
});

CodeBehind:

protected void btnTest_Click(object sender, EventArgs e)
{
//here not come.
}

Code Behind btnTest event not work ?

2
  • You need to know ClientID of your button in JS. It is not the same as ID, but something like ctl00_Content1_btnTest, if you use masterpage. Commented May 25, 2010 at 14:57
  • The problem is that you have to set disabled="disabled" attribute instead of disabled="true". Commented May 25, 2010 at 15:01

6 Answers 6

8

I think that making the button disabled in the click event handler is preventing the postback. Try executing the disabling code after some time:

$('[id$=btnTest]').click(function(){
    var button = this;   

    setTimeout(function() {
        $(button).attr('disabled', 'disabled');
    }, 100);
});
Sign up to request clarification or add additional context in comments.

Comments

2

The sample code is using the ends-with selector. There is no mistake in selector. you just need to change the code like this

$('[id$=btnTest]').click(function () {
       $('[id$=btnTest]').attr('disabled', true);
});

I have tested this and works fine without any issues.

Comments

1

Try to use jQuery class selector:

  1. Add CssClass="MyButton" to your ASP.NET button;
  2. Use this selector in jQuery
  3. Set disabled="disabled" attribute on click

jQuery:

$('button.MyButton').click(function(){ 
  $(this).attr('disabled', 'disabled');
});

1 Comment

Just replace value of disabled attribute true by disabled : .attr('disabled', 'true') by .attr('disabled', 'disabled') - that's the problem.
1

I can fix your problems:$(".classButton").prop('disabled','disabled'); and remove disabled: $(".classButton").prop('disabled', '');

Comments

0

Wouldn't you just need to do the following:

btnTest.Enabled = False;

in the code-behind file? This will cause a postback but it should work.

Comments

-2

It wouldn't work because the generated HTML id is different than the ASP.NET id.
So btnTest will be rendered as another Id.

A quick dirty way is to to run the page, view the HTML source and locate the button's generated Id and pass it as an arugment in the jQuery function.

A better way is to generate the jQuery function through code behind:

Literal1.Text = "$('[id$=" + btnTest.ClientId + "]').click(function(
{$(this).attr('disabled', 'disabled');});";

Edit: Also I couldn't help but realize that your OnClick attribute should point to btnTest_Click and not btn_Click

2 Comments

$= is the "ends-with" selector, his code already works for this.
"btnTest_Click and not btn_Click" no

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.