#javascript #html #jquery #django
#javascript #HTML #jquery #django
Вопрос:
У меня есть 2 формы в одном HTML-файле (не вложенном). Каждый делает свое дело и не полагается друг на друга. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что $(form).submit((event)=>{code})
работает только на:
<form id="mainForm" action='' method="POST" enctype="multipart/form-data">
{% csrf_token %}
<!--Cover image-->
<ul class="error" id="coverImageLink_errors"></ul>
<div class="cover-img">
{{ mainForm.coverImageLink|add_class:'actual-img' }}
<img src="#" id="cover" alt="Your image" style="color: black;">
</div>
<!--Music data part-->
<div class="music-data">
<ul class="error" id="albumName_errors"></ul>
<label for="{ mainForm.albumName.id_for_label }">title</label><br>
{{ mainForm.albumName }} <br><br>
</div>
<input id='albumSubmit' type="submit" value="Next" class="main-form-upload">
</form>
<script>
$('#mainForm').submit((event)=>{
event.preventDefault();
console.log('AJAX CALLED FOR MAIN FORM');
});
</script>
Но не на:
<form id="AdvancedForm" action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<ul class="last-step-error" id="advancedForm.non_field_errors"></ul>
<section id="main-section">
<!-- compresso page -->
<div id="compresso-page">
<div class="parent">
<div class="name">0. Hello world</div>
<ul class="pre-errors">
<li>Video file is not supported</li>
<li> 2 more</li>
</ul>
</div>
</div>
</section>
<div style="height: 20px;"></div> <!-- prevents collision with button -->
<input type="submit" value="Release" onclick="alert('Advanced form submit pressed')">
</form>
<script>
$('#AdvancedForm').submit((event)=>{
event.preventDefault();
console.log('AJAX CALLED FOR ADVANCED FORM')
const url = '{% url "validate-upload-collection" %}'
})
</script>
Я вижу, AJAX CALLED FOR MAIN FORM
но не AJAX CALLED FOR ADVANCED FORM
.
По умолчанию используется расширенная форма display='none'
console.log(document.getElementById('AdvancedForm'))
возвращает здесь
Если вас смущает {{ something }}
, это просто некоторый синтаксис переменной django (веб-фреймворка). Эти переменные будут заполнены на стороне сервера, поэтому их нет в html.
Комментарии:
1. Если вы делаете
$("#AdvancedForm")[0]
это в консоли, видите ли вы, что она правильно захватывает вашу форму?2. Работает ли это, если вы измените его на
$(document).on("submit", "#AdvancedForm", function() { alert("try this"); });
3. @g23 Я сделал именно это, и возвращается объект длиной 1. Моя форма находится внутри
4. @freedomn-m Нет.
5. Как насчет
console.log($("[id=Advancedform]").length)
?
Ответ №1:
Возможно, это onclick="alert('Advanced form submit pressed')"
мешает вашему обработчику. Попробуйте удалить это из кнопки отправки.
Еще одна вещь, которую я вижу, это то, что вторая форма не имеет реальных полей? Это может быть другое дело. Попробуйте добавить <input type="text" name="test" />
Комментарии:
1. Пробовал, но безуспешно