Как отключить кнопку сохранения Jquery на первом клике

Я использую приглашение jQuery, чтобы предложить пользователю сохранить. Таким образом, пользователь нажимает кнопку "Сохранить", отображается запрос Jquery и спрашивает, уверен ли пользователь, хочет ли он сохранить изменения. Проблема в том, что пользователь может несколько раз нажать на кнопку приглашения jQuery Save, прежде чем приглашение закроется. В результате моя подпрограмма сохранения запускается один раз при каждом нажатии кнопки сохранения, что приводит к дублированию записей в базе данных. Мне нужно отключить кнопку сохранения подсказки при первом нажатии или просто закрыть окно подсказки при первом нажатии, чтобы предотвратить многократное сохранение. Как я могу это сделать?

Код клиента:

$.prompt("Are you sure you want to save? You will not be able to change your decision after it's been saved.", {
    title: "Save?",
    buttons: { "Save": true, "Cancel": false },
    submit: function (e, v, m, f) {
        if (v) {
            response = saveUpdates(LoanDetails);
        }
    }
});

2 ответа

Решение

Я создал скрипку здесь: http://jsfiddle.net/smurphy/4fqjR/

Решение немного запутанное. Я думал, что будет более простой способ сделать это, но после просмотра документации я не могу найти никакой встроенной функции.

Вот код:

submit: function (value, message) {
        if (value) {
            $(message.prevObject)
               .find('button[value="true"]')
               .attr('disabled', true);

            //TODO: perform save 
            //response = saveUpdates(LoanDetails);
        }
    }

message Параметр является ссылкой на текстовое описание, поэтому вы можете найти кнопку, перемещаясь по DOM с этой начальной точки.

Попробуйте использовать глобальную переменную в качестве флага или отключите кнопку приглашения (если вы используете кнопку для вызова запроса) $("#promptbutton"). Prop("disabled",true);

Редактировать:

Более простое решение - просто закрыть приглашение прямо перед вызовом функции saveUpdates или в начале функции:

jQuery.prompt.close();
Другие вопросы по тегам