Пользовательские подтверждения с Jquery и MVC4

0

Очень новый для jquery и попытка реализовать окно подтверждения для кнопки удаления. Я могу получить простое стандартное поле оповещения для выполнения функции, которую я хочу с помощью этого кода:

<script type="text/javascript">
    $(document).ready(function () {
        $("input[name='deleteComment']").click(function () {
            return confirm('Are You Sure You Want To Delete This?');
        });
    });
</script>

Теперь это функционально, но выглядит ужасно, поэтому я пытаюсь использовать плагин jQuery-confirmOn. Их документация говорит, чтобы назвать это, я должен использовать такой код:

$('#myButton').confirmOn('click', function(e, confirmed){
    if(confirmed) deleteSomethingImportant();
    else {
        //If we need to, we can do some actions here if the user cancelled the confirmation
    }
})

С моими очень ограниченными знаниями jquery я могу понять, что это делает. Но мне нужна следующая строка.

if(confirmed) deleteSomethingImportant();

что мне нужно отредактировать эту строку, чтобы иметь тот же эффект, что и мой первоначальный пример? Я изо всех сил пытаюсь понять, как jquery будет взаимодействовать с MVC, поэтому любая помощь будет назначена.

заранее спасибо

  • 0
    Вы отправляете данные обратно на сервер для удаления? В первом примере вы ничего не удаляете. Метод confirmOn вызовет deleteSomethingImportant() когда удаление будет подтверждено.
  • 0
    В deleteSomethingImportant() вы можете, например, сделать ajax-вызов на сервер, чтобы узнать, какие вещи нужно удалить.
Показать ещё 1 комментарий
Теги:
asp.net-mvc
asp.net-mvc-4
asp.net-mvc-3

2 ответа

1
Лучший ответ

Вы можете просто написать функцию JavaScript, чтобы создать простой диалог подтверждения с jQueryUI. Это очень просто.

Вы передаете сообщение для отображения в диалоговом окне и обратного вызова для вызова при нажатии кнопки "Да".

function confirm(message, callback) {
    $('<div></div>').appendTo('body')
        .html('<div><p>' + message + '</p></div>') // Append the message
        .dialog({
            resizable: false,
            autoOpen: true,
            modal: true,
            buttons: [{
                text: "Yes",
                click: function () {
                    // Callback on click
                    if (typeof(callback) !== "undefined") {
                         callback();
                    }
                    $(this).dialog('close');
                }
            },
            {
                text: "No",
                click: function () {
                    $(this).dialog('close');
                }
            }]
    });
}

Теперь скажите, что вы хотите подтвердить отправку формы. Вы просто вызываете функцию с параметрами сообщения и обратного вызова:

$('#myButton').click(function(e) {
    e.preventDefault();

    // Prompt the submit
    confirm("Are you sure you want to delete this?", function() {
        // Submit the form
        $("#myForm").submit();
    });
})

Где-то в вашем html у вас есть форма, которую вы хотите опубликовать:

@using ( Html.BeginForm("Delete", "MyController", FormMethod.Post, new {id="myForm"} ))
{
   ....
}

И получите его в "MyController"

[HttpPost]
public ActionResult Delete(SomeModel model)
{
    /* Delete the entity from database */
    ....

    return RedirectToAction("Index");
}
0

Попробуйте это, это просто пример

$(document).ready(function(){

    $(".confirm").easyconfirm();
    $("#alert").click(function() {
        alert("You approved the action");
    });
});


<a href="#" class="confirm" id="alert">Normal test</a>

И для большего количества примеров прочитайте это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню