Как обновить скрытое поле в форме Django - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь найти лучший подход к изменению скрытого поля формы django. Или, если это вообще возможно. У меня была настройка HTML, чтобы выполнить эту задачу, и она работала отлично. Однако, чтобы предотвратить многократную подачу заявок, мне пришлось изменить свой HTML, и теперь я не могу понять, как передать значение через кнопку HTML в зависимости от того, на что нажимает пользователь.

Раньше у меня были две кнопки, определенные как набросок ниже:

<button type="submit" class="button1" name="status" value="Saved"><h3 class="txtalgn4">Save</h3></button>

<button type="submit" class="button2" name="status" value="Submitted"><h3 class="txtalgn4">Submit</h3></button>

Как указано выше, это отлично работало с целью передачи значения атрибуту для моей модели. Значение статуса было сохранено, как и ожидалось, в зависимости от того, на какую кнопку нажал пользователь.

Теперь я обновил кнопки до type="button" в ответ на эту проблему, которую я открыл сегодня ... Как предотвратить двойную отправку с проверкой формы

Я пытался использовать следующий код:

<button type="button" class="button1" name="status" value="Saved"><h3 class="txtalgn4">Save</h3></button>

<button type="button" class="button2" name="status" value="Submitted"><h3 class="txtalgn4">Submit</h3></button>

И затем я также изменил поле статуса на {{ status.as_hidden }} в своем HTML, чтобы получить значение. Это работает, только если я жестко закодировал значение статуса в моей структуре базы данных. Мне нужно иметь возможность получить это значение динамически в зависимости от того, что пользователь нажимает. Является ли JQuery с Ajax правильным подходом для этого? Есть ли какой-нибудь простой способ изменить скрытое поле в зависимости от того, на какую кнопку нажимает пользователь?

Есть ли какой-нибудь лучший способ попытаться получить это поле скрытно? Как указано выше, способ HTML с type="submit" работал отлично, но вызывал проблемы, когда я пытался помешать пользователю дважды отправить форму. Как и во всём программировании, я решил одну проблему и создал другую.

Заранее спасибо за любые мысли.

1 Ответ

0 голосов
/ 24 января 2019

Продолжайте использовать две кнопки отправки, как вы были. Но вместо отключения кнопок вы отключаете отправку всей формы, если она была отправлена.

Во-первых, дайте вашей форме уникальный идентификатор HTML.

<form id="myform">
    ...
</form>

<!-- JS code -->
<script type="text/javascript">
$('#myform').on('submit', function(e) {
    if ($(this).hasClass('submitted')) {
        // prevent submission
        e.preventDefault();
        return;
    }

    $(this).addClass('submitted');
});
</script>
...