2016-05-01 23 views
0

Wenn ich auf die Schaltfläche von asp.net klicke dann auf Client klicken Ich deaktiviere, dass angeklickt Button dann serverseitige Klick-Ereignis wird nicht ausgelöst.Ein Klicken Wenn die Schaltfläche deaktiviert ist Klicken Sie auf Schaltfläche wird nicht ausgelöst

Mein Code ist wie folgt:

<asp:Button ID="ButtonSend2" runat="server" CssClass="CommonButtonStyle" Text="Send Message" OnClientClick="this.disabled='true';return OnClickSendEmail();" 
OnClick="btnSend_Click" ValidationGroup="ValidationGroupCompose" /> 

und das ist mein Java-Script-Code:

function OnClickSendEmail() { 
    var value = document.getElementById('CE_ctl00_ContentMain_TextArea_ID').getHTML().replace(/&nbsp;/g, "").trim(); 
    if (value == "" || value == undefined) { 
     $j('#ctl00_ContentMain_lblMessage').text('Message body can\'t be blank!'); 
     $j('#ctl00_ContentMain_lblMessage').show()  
     return false; 
    } else { 
     $j('#ctl00_ContentMain_lblMessage').text(''); 
     console.log("Value is returing true"); 
     return true; 
    } 
} 
+0

Könnten Sie versuchen und UseSubmitBehavior = "false" hinzufügen, um die ASP: Button – dmoo

+0

Ja, ich habe versucht, dies auch –

+0

Wenn ich diese Schaltfläche dann nicht deaktiviert und kein Ereignis ausgelöst wird –

Antwort

1

Sobald die Schaltfläche deaktiviert ist, wird das Postback nicht vorgenommen. Sie könnten die Schaltfläche am Ende der Verarbeitung wieder aktivieren, aber es gibt ein weiteres Problem: Die Anzeige wird nicht aktualisiert, wenn der Browser gerade mit der Verarbeitung von OnClickSendEmail() beschäftigt ist. Daher wird die Schaltfläche niemals deaktiviert angezeigt.

Hier ist eine mögliche Lösung, die das Postback umfasst in erster und Verarbeiten des Befehls Cancelling asynchron:

<asp:Button ID="ButtonSend2" runat="server" OnClientClick="this.disabled = true; setTimeout(OnClickSendEmail, 0); return false;" ... /> 

das Postback wird dann ausgelöst, mit __doPostBack am Ende der langen Verarbeitungs:

function OnClickSendEmail() { 
    var value = document.getElementById('CE_ctl00_ContentMain_TextArea_ID').getHTML().replace(/&nbsp;/g, "").trim(); 
    if (value == "" || value == undefined) { 
     $j('#ctl00_ContentMain_lblMessage').text('Message body can\'t be blank!'); 
     $j('#ctl00_ContentMain_lblMessage').show()  
    } else { 
     $j('#ctl00_ContentMain_lblMessage').text(''); 
     console.log("Value is returing true"); 
     __doPostBack('<%= ButtonSend2.UniqueID %>', ''); 
    } 
} 
0

Auf Ihrem JavaScript-Code, gibt es zwei Punkte, die nicht Brennen am Ende führen kann. Ich schreibe auf den Code die möglichen Punkte. Auch Sie haben es auf ValidationGroupCompose Validierung, sind Sie sicher, dass nicht von dort gestoppt?

function OnClickSendEmail() { 
    // !!! if the element not found is throw an error here and not continue at all. 
    var value = document.getElementById('CE_ctl00_ContentMain_TextArea_ID').getHTML().replace(/&nbsp;/g, "").trim(); 
    if (value == "" || value == undefined) { 
     $j('#ctl00_ContentMain_lblMessage').text('Message body can\'t be blank!'); 
     $j('#ctl00_ContentMain_lblMessage').show()  
     // !!!! if comes here and return false, then is NOT firing, not continue. 
     return false; 
    } else { 
     $j('#ctl00_ContentMain_lblMessage').text(''); 
     // !!!! if comes here and you not use a browser that support the console, function, is thrown an error and not continue to fire up. 
     console.log("Value is returing true"); 
     return true; 
    } 
} 

Debug Ihr Javascript, um zu sehen, was falsch gehen, entfernen Sie auch die console.log von Ihrem letzten Code.

+0

Sorr y Dies funktioniert auch nicht –

Verwandte Themen