Две функции 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>


Любая помощь будет признательна. Заранее спасибо..

959   3  

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/alert box в firstFunction, то.Функция confirm/alert останавливает выполнение кода до тех пор, пока он не будет отклонен.Это означает, что secondFunction будет вызвана, когда firstFunction confirm будет закрыта.

Вы хотите выполнить какое-то действие по нажатию кнопки, только если пользователь нажимает диалог подтверждения на OK , Поэтому вам нужно вызвать "ur action method" /код действия (который вам нужно принять) при нажатии кнопки " OK "диалогового окна вместо вызова действия" click () " явным образом снова.

Comments

    Ничего не найдено.