2016-11-30 4 views
0

Ich versuche, einen Klick in einem html Button über javascript zu tun, aber ich kann es nicht funktionieren.Button klicken funktioniert nicht in Javascript

Dies ist die Taste I mit javascript zu klicken bin versucht (es funktioniert, wenn ich es klicken)

<button id="btnClean" runat="server" type="button" class="btn btn-warning btn-cons m-b-10" onserverclick="btnClean_Click"> 
    <i class="fa fa-trash-o"></i> 
    <span class="bold m-l-3">Limpar</span> 
</button> 

Dies ist der Knopf, der die javascript Funktion aufruft:

<button id="btnCreateOS" type="button" class="btn btn-success btn-cons m-b-10" onclick="Clean();"> 
    <i class="fa fa-save"></i> 
    <span class="bold m-l-3">Criar</span> 
</button> 

Und das ist mein javascript (es befindet sich unter <form> Markierung in meiner .aspx Seite):

<script type="text/javascript">   

    function Clean() { 

     document.getElementById("btnClean").click(); 

    } 

</script> 

Und schließlich ist dies die asp Methode:

public void btnClean_Click(object sender, EventArgs e) 
{ 
    CleanFields(); 
} 

Irgendwelche Ideen, was ich falsch mache?

+0

Jeder Fehler in der Konsole. –

+0

Wenn Sie dies debuggen, wo/wie genau schlägt es fehl? Gibt es Fehler auf der Client- oder Serverseite? Wird die clientseitige Funktion aufgerufen? Wird der zweite Button durch seine ID gefunden? Wird das Post-Back aufgerufen? – David

+0

Verschieben Sie Ihr Javascript nach dem Schließen Body-Tag – ScanQR

Antwort

2

Bsically, was passiert, wenn Sie Master-und Content-Seite verwenden, dann ändert er immer seine ID nach ihm Standardverhalten.

function Clean() { 
     //document.getElementById("btnClean").click() 

     document.getElementById('<%= btnClean.ClientID %>').click(); 
    } 

Eine andere Lösung, die Sie gerade ClientIDMode = "Static" hinzufügen.

<button id="btnClean" runat="server" clientidmode="Static" type="button" class="btn btn-warning btn-cons m-b-10" onserverclick="btnClean_Click"> 
     <i class="fa fa-trash-o"></i> 
     <span class="bold m-l-3">Limpar</span> 
    </button> 

in Ihrem Button ..

Dann wird Ihr aktueller JavaScript-Code auch arbeiten ..

function Clean() { 
     document.getElementById("btnClean").click(); 

     //document.getElementById('<%= btnClean.ClientID %>').click(); 
    } 
+0

Schön !!! Vielen Dank dafür! Und danke auch für deine Erklärung. – perozzo

0

sollten Sie

document.getElementById("btnClean").trigger("click"); 

stattdessen verwenden, weil es schneller ist. Vielleicht solltest du auch versuchen, Standardverhalten in btnClear_Click zu verhindern? Versuchen Sie, Ihren beiden Funktionen eine console.log ("a") (oder besser "b" in der zweiten) hinzuzufügen, um zu sehen, ob und welche der beiden Funktionen ausgeführt wird.

+0

Bekam den gleichen Fehler in der Konsole: 'Uncaught TypeError: Kann die Eigenschaft 'trigger' von null nicht lesen (...)' – perozzo

+0

1) '.trigger' ist eine jQuery-Methode, kein natives Javascript. 2) Selbst wenn das funktionierte, wäre es semantisch das gleiche wie OPs existierender Aufruf von 'click()'. 3) selbst wenn dies funktionierte, würde es nur das clientseitige Ereignis von "btnClean" auslösen, das die Schaltfläche nicht hat - es hat ein serverseitiges Ereignis, das das OP zu rufen versucht. – ADyson

+0

Vielen Dank für Ihre Hilfe! – perozzo

Verwandte Themen