2016-04-26 6 views
2

Eigentlich versuche ich ein Dialogfeld auf einen Klick hinzufügen. Aber auf der OnClick-Funktion dieser Schaltfläche hatte ich bereits die Funktion eines Controllers aufgerufen. Der HTML-Code hierfür lautet:Zwei OnClick-Funktion in einer Taste und möchte ein Klick-Funktion nach dem anderen auftreten

<div class="pro-btn btn"> 
         @{ 
<input type="button" id="[email protected]" class="button-1"value="@T("Nopaholics.Auction.AuctionDetailView.PlaceBid")" data- productid="@Model.ProductId" 
onclick="Auction.placeBid('@Url.RouteUrl("Nopaholics.Auction.PlaceBid", new { productId = Model.ProductId, auctionId = Model.AuctionId })', '#product-details-form');return false;" /> 
} 
</div> 

Jetzt nach unten jquery schreiben, beide klicken funtions gleichzeitig arbeiten. Aber ich möchte zuerst bestätigen, indem Sie auf die Schaltfläche OK des Dialogfelds klicken und die Controller-Aktion aufrufen.

<script> 
$('#place-bid-button-'[email protected]()).click(function(e){ 

$("#dialog-confirm").dialog({ 
    resizable: false, 
    height:160, 
    modal: true, 
    buttons: { 
     "OK": function() { 
      $(this).dialog("close"); 
      $("#[email protected]()").click(); 
      }, 
      Cancel: function(e) { 
       $(this).dialog("close"); 
       $('#place-bid-button-'[email protected]()).die(); 
       console.log(e); 
       //return false; 
       //e.preventDefault(); 
      } 
     } 
    }); 
}); 
</script> 

Jede Hilfe wäre willkommen. Vielen Dank im Voraus ..

+0

Entfernen Sie die 'onclick' in der Taste und führen Sie diesen Code im' "OK": function() {$ (this) .dialog ("nah"); // rufe Auction.placeBid hier auf ... ' –

+1

Was ist die 2 Methode, die ausgeführt werden muss? weil ich onclick = "Auction .." sehe, was kein Rasierklingen-Code ist (@ fehlt). Erstellen Sie eine js-Methode und rufen Sie sie nach der Zeile $ (this) .dialog ("close") auf; –

Antwort

2

Sie benötigen keine Mehrfachfunktion. Ich würde auch empfehlen, Inline-Click-Handler vollständig loszuwerden.

Sie können die URL unter Verwendung des vorangestellten benutzerdefinierten Attributs speichern, das unter Verwendung der HTMLElement.dataset-Eigenschaft abgerufen werden kann.

HTML

@{ 
    <input type="button" class="place-bid-button button-1" 
      value="@T("Nopaholics.Auction.AuctionDetailView.PlaceBid")" 
      data-url="@Url.RouteUrl("Nopaholics.Auction.PlaceBid", new { productId = Model.ProductId, auctionId = Model.AuctionId })" 
      data-form="#product-details-form"/> 
} 

Dann können Sie folgende Skript verwenden

//Bind click hndler using a common class 
$('.place-bid-button').click(function(e) { 
    //Store the refrence in a variabled 
    var self = this; 

    $("#dialog-confirm").dialog({ 
     resizable: false, 
     height: 160, 
     modal: true, 
     buttons: { 
      "OK": function() { 
       //Cal the method with url and form name 
       Auction.placeBid(self.dataset.url, self.dataset.form); 
       $(this).dialog("close"); 

      }, 
      Cancel: function(e) { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
}); 
+0

Ich versuchte Ihren Ansatz, aber auf die Schaltfläche geklickt, zeigt es keine Änderungen –

+0

Kein Fehler, aber Button Clik zeigt keine Wirkung –

+0

@Bijaykushawaha, habe ich auch den HTML-Code geändert, verwenden Sie den genauen Code – Satpal

0

schreibt sowohl die Funktion auf einzelne onclick Attribute wie: onclick="firstFunction();SecondFunction();"

Wenn Sie confirm/alert Box in firstfunction then.The confirm/alert Funktionsausführung haben den Codes hält, bis es dismissed.This second sein bedeutet Willen wird aufgerufen, wenn firstFunction confirm geschlossen ist.

0

Sie möchten einige Aktionen auf Knopfdruck durchführen, nur wenn der Benutzer auf den Bestätigungsdialog klickt, OK, So müssen Sie die 'ur action method'/action code aufrufen (was Sie tun müssen) Klicken Sie auf die Schaltfläche 'OK', um die Aktion 'click()' erneut aufzurufen.

Verwandte Themen