Две функции onClick в одной кнопке и хотят, чтобы произошла одна функция click после другой
На самом деле я пытаюсь добавить диалоговое окно по щелчку кнопки. Но на функции OnClick этой кнопки я уже вызвал функцию контроллера. HTML-код для этого:
<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>
Теперь, после написания ниже jquery, обе функции click работают одновременно. Но я хочу сначала подтвердить, нажав кнопку OK диалогового окна и вызываемого действия контроллера.
<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>
Любая помощь будет признательна. Заранее спасибо..
3 ответов:
Вам не нужна множественная функция. Я бы тоже рекомендовал полностью избавиться от встроенного обработчика кликов.
Вы можете сохранить url-адрес, используя
data-*префиксный пользовательский атрибут, который может быть извлечен с помощью HTMLElement.свойство dataset .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"/> }Тогда вы можете использовать следующий скрипт
//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"); } } }); });
Запишите обе функции на один атрибут
onclick, например:onclick="firstFunction();SecondFunction();"Если у вас есть
confirm/alertbox в firstFunction, то.Функцияconfirm/alertостанавливает выполнение кода до тех пор, пока он не будет отклонен.Это означает, что secondFunction будет вызвана, когда firstFunction confirm будет закрыта.
Вы хотите выполнить какое-то действие по нажатию кнопки, только если пользователь нажимает диалог подтверждения на OK , Поэтому вам нужно вызвать "ur action method" /код действия (который вам нужно принять) при нажатии кнопки " OK "диалогового окна вместо вызова действия" click () " явным образом снова.
Comments