2010-05-25 6 views
6

HTML-Code:JQuery Asp.net-Taste deaktivieren

<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 hinter btnTest Ereignis nicht?

+0

Sie müssen wissen, 'ClientID' Ihrer Schaltfläche in JS.Es ist nicht dasselbe wie "ID", aber etwas wie "ctl00_Content1_btnTest", wenn Sie masterpage verwenden. –

+0

Das Problem ist, dass Sie das Attribut "disabled =" disabled "" anstelle von "disabled =" true "' setzen müssen. –

Antwort

8

Ich denke, dass das Deaktivieren der Schaltfläche im Click-Ereignishandler das Postback verhindert. Versuchen Sie, die Deaktivierung Code nach einiger Zeit ausführen:

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

    setTimeout(function() { 
     $(button).attr('disabled', 'disabled'); 
    }, 100); 
}); 
-2

Es würde nicht funktionieren, weil die generierte HTML-ID anders ist als die ASP.NET-ID.
So btnTest wird als eine andere ID gerendert.

Ein schneller schmutzig Weg ist, um die Seite auszuführen, zeigen Sie die HTML-Quelle und suchen Sie die Schaltfläche erzeugt Id und als arugment in der Funktion jQuery übergeben.

Eine bessere Möglichkeit ist die jQuery-Funktion durch Code zu generieren hinter:

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

bearbeiten: Auch konnte ich nicht helfen, aber zu erkennen, dass Ihr OnClick Attribut btnTest_Click anweisen und nicht btn_Click

+1

'$ =' ist der "endet mit" Selektor, sein Code funktioniert bereits dafür. –

+0

"btnTest_Click und nicht btn_Click" nein – Chicharito

0

Würdest du nicht gerade ne ed, um folgendes zu tun:

btnTest.Enabled = False; 

in der Code-Behind-Datei? Dies wird ein Postback verursachen, aber es sollte funktionieren.

+0

ich wan't Postback – Chicharito

1

Versuchen Sie jQuery-Klasse-Selektor:

  1. hinzufügen CssClass="MyButton" zu ASP.NET-Taste;
  2. Mit diesem Selektor in jQuery
  3. Set disabled="disabled" Attribut klicken

jQuery:

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

Ersetzen Sie einfach den Wert von 'deaktiviert' Attribut * true * von ** deaktiviert **: '.attr ('deaktiviert', 'wahr')' von '.attr ('Behindert', 'Behindert') '- das ist das Problem. –

1

Der Beispielcode, die Ende-mit-Selektor verwendet. Es gibt keinen Fehler im Selektor. Sie müssen nur den Code ändern wie diese

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

ich diese getestet und funktioniert ohne Probleme in Ordnung.

0

ich das Problem lösen kann: $(".classButton").prop('disabled','disabled'); and remove disabled: $(".classButton").prop('disabled', '');