2013-03-05 15 views
12

Ich habe eine Frage, habe ich eine Schaltfläche wie unten:So rufen Sie eine asp: Button OnClick-Ereignis mit JavaScript?

<asp:Button ID="savebtn" runat="server" OnClick="savebtn_Click" Visible="false" /> 

ich dann wie HTML-Schaltfläche haben wie unten:

<button id="btnsave" onclick="fncsave">Save</button> 

Ich habe das Javascript unter:

<script type="text/javascript"> 
    function fncsave() 
    { 
     document.getElementById('<%= savebtn.OnClick %>').click() 
    } 
</script> 

Meine Frage ist nun, wie kann ich den asp: Button OnClick von der HTML-Schaltfläche aufrufen? Ich habe gelesen, dass Sie dies tun können, indem Sie von JavaScript durch Id aufrufen, aber nicht funktioniert.

Jede Hilfe wird es wirklich zu schätzen wissen.

Danke

+0

eine Betrogene sein könnte ... @Mortalus Ist es cool das __doPostBack Methode aufrufen? Das habe ich in der Praxis noch nie gemacht. –

+0

Ich bin mir nicht sicher, was du mit "cool" meinst, wenn du dich auf eine JavaScript-Methode beziehst :) aber ja, du kannst es benutzen. Wenn Sie eine tatsächliche Client-Schaltfläche emulieren können, klicken Sie auf eine der Antworten, die einfacher wäre, weil Sie manchmal einen Teil zurückstellen möchten und die Antwort in der Frage, die ich gepostet habe, nicht funktioniert. – Mortalus

Antwort

22

Set style= "display:none;". Durch die Einstellung visible=false wird die Schaltfläche im Browser nicht gerendert. Daher wird das clientseitige Skript nicht ausgeführt.

<asp:Button ID="savebtn" runat="server" OnClick="savebtn_Click" style="display:none" /> 

HTML-Markup sollte

<button id="btnsave" onclick="fncsave()">Save</button> 

ändern JavaScript

<script type="text/javascript"> 
    function fncsave() 
    { 
     document.getElementById('<%= savebtn.ClientID %>').click(); 
    } 
</script> 
+0

Der richtige Onclick wäre 'onclick =" fncsave(); return false; " –

+0

Lebensretter. Wenn ich 'return false;' verwende, wird ein PostBack verhindert? – SearchForKnowledge

+0

Ja, es verhindert – Sunny

6

sein Wenn Sie mit jQuery offen sind:

<script type="text/javascript"> 
function fncsave() 
{ 
    $('#<%= savebtn.ClientID %>').click(); 
} 
</script> 

Auch, wenn Sie verwenden .NET 4 oder besser können Sie diemachenund vereinfachen den Code:

<script type="text/javascript"> 
function fncsave() 
{ 
    $("#savebtn").click(); 
} 
</script> 

Referenz: MSDN Article for Control.ClientIDMode

+0

danke für Ihre Antwort – jorame

+0

mein Vergnügen. Frage. warum nicht einfach die ASP.NET-Schaltfläche verwenden? –

+0

Ich benutze einige CSS mit jQuery und das ASP.NET gibt mir eine harte Zeit, es zu stylen oder mein Design arbeiten zu lassen. – jorame

Verwandte Themen