2013-03-05 23 views
12

mam pytanie, mam przycisk jak poniżej:Jak wywołać zdarzenie asp: Button OnClick przy użyciu JavaScript?

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

Mam następnie przycisk HTML podobny jak poniżej:

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

Mam JavaScript poniżej:

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

Moje pytanie brzmi teraz: jak mogę połączyć się z asp: Button OnClick z przycisku HTML? Czytałem, że możesz to zrobić, dzwoniąc z JavaScript przez Id, ale nie działa.

Każda pomoc będzie naprawdę wdzięczna.

Dziękuję

+0

może być dupe ... @Mortalus to jest cool wywołać metodę __doPostBack? Nigdy tego nie robiłem w praktyce. –

+0

Nie jestem pewien, co masz na myśli mówiąc "cool", gdy odwołujesz się do metody JavaScript :), ale tak, możesz jej użyć. Jeśli możesz emulować rzeczywisty przycisk klienta, kliknij jedną z odpowiedzi, która byłaby prostsza, ponieważ czasami możesz chcieć zrobić częściowy post, a następnie odpowiedź w zadanym przeze mnie pytaniu nie będzie działać. – Mortalus

Odpowiedz

22

Set style= "display:none;". Ustawiając visible=false, nie spowoduje to wyświetlenia przycisku w przeglądarce. Zatem skrypt po stronie klienta nie zostanie wykonany.

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

znaczniki HTML powinien być

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

Zmień JavaScript, żeby

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

Właściwym onclick byłoby 'onclick =" fncsave(); return false; "' –

+0

Life saver. Jeśli użyję zwrotu "false", czy zapobiegnie to PostBack? – SearchForKnowledge

+0

Tak, to przeszkadza – Sunny

6

Jeśli jesteś otwarty na użyciu jQuery:

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

Ponadto, jeśli używasz .NET 4 lub lepszy możesz zrobić ClientIDMode == static i uprościć kod:

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

referencyjny: MSDN Article for Control.ClientIDMode

+0

dziękuję za odpowiedź – jorame

+0

moja przyjemność. Pytanie. dlaczego nie po prostu użyć przycisku ASP.NET? –

+0

Używam niektórych CSS z jQuery, a ASP.NET sprawia mi trudność w stylizowaniu lub projektowaniu. – jorame

Powiązane problemy