Как сбросить выбираемые поля в приложении Django с помощью jQuery - PullRequest
0 голосов
/ 26 мая 2020

Меня недавно попросили взять на себя частично написанное приложение Django. Я могу справиться с Python, но у меня нет опыта Javascript, и здесь jQuery используется для выполнения множества манипуляций с формами. После отправки формы сама форма должна быть возвращена в исходное состояние. Однако, хотя сброс в основном работает, любые поля выбора (одно или несколько) появляются на веб-странице, чтобы сохранить свои старые значения.

Поля определены примерно так в приложении Django

business_unit = forms.ChoiceField(
    label='Business unit',
    required=True,
    choices=BUSINESS_UNIT_CHOICES,
    widget=forms.Select(attrs={'data-placeholder':'Select one', 'data-minimum-results-for-search':'10', 'data-tags':'true'}),
)

И сброс выполняется через

$('#custom-form').trigger('reset');

Все простые текстовые поля очищаются. Значения полей выбора фактически очищены (они не содержат значений), но в веб-форме они кажутся заполненными. Есть предложения, что мне не хватает?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Как я уже упоминал в своем вопросе, я всего Javascript новичок. Сегодня я узнал о плагинах, в данном случае это select2. Как только я это понял, это было так же просто, как добавить следующее после сброса формы

$( "select" ).each(function( index ) {
    $( this ).trigger('change');
});
1 голос
/ 27 мая 2020

Вы можете сделать следующее: В дополнение к своему сбросу добавьте это в свой код, чтобы перебрать все поля выбора и установить для них первый вариант (обычно это вариант с заполнителем «Пожалуйста, выберите»).

 let selects = document.getElementsByTagName("select");
 for(let i=0; i < selects.length; i++){
    selects[i].selectedIndex = 0;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...