Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 18819

What is causing the route to change (ikely because form is submitting), i also added return false in the function?

$
0
0

I am currently building a single page web app and wanted that js handle the form submission and so that route remain the same. But when i click the submit button route changes,

JS Code:

document.addEventListener('DOMContentLoaded', function() {  // Use buttons to toggle between views  document.querySelector('#inbox').addEventListener('click', () => load_mailbox('inbox'));  document.querySelector('#sent').addEventListener('click', () => load_mailbox('sent'));  document.querySelector('#archived').addEventListener('click', () => load_mailbox('archive'));  document.querySelector('#compose').addEventListener('click', compose_email);  // By default, load the inbox  load_mailbox('inbox');});function compose_email() {  // Show compose view and hide other views  document.querySelector('#emails-view').style.display = 'none';  document.querySelector('#compose-view').style.display = 'block';  // Clear out composition fields  document.querySelector('#compose-recipients').value = '';  document.querySelector('#compose-subject').value = '';  document.querySelector('#compose-body').value = '';}function load_mailbox(mailbox) {  // Show the mailbox and hide other views  document.querySelector('#emails-view').style.display = 'block';  document.querySelector('#compose-view').style.display = 'none';  // Show the mailbox name  document.querySelector('#emails-view').innerHTML = `<h3>${mailbox.charAt(0).toUpperCase() + mailbox.slice(1)}</h3>`;}function send_mail(event){  const recipients = document.querySelector('#compose-recipients').value;  const subject = document.querySelector('#compose-subject').value;  const body = document.querySelector('#compose-body').value;  //send the email as post to the server   fetch('/emails', {    method: 'POST',    body: JSON.stringify({      recipients: recipients,      subject: subject,      body: body    })  })  .then(response => response.json())  .then(result => {      console.log(result);      //loading the sent box after sending the email      load_mailbox('sent');    })  return false;}document.querySelector('#compose-form').onsubmit = send_mail;

HTML code:

{% extends "mail/layout.html" %}{% load static %}{% block body %}<h2>{{ request.user.email }}</h2><button class="btn btn-sm btn-outline-primary" id="inbox">Inbox</button><button class="btn btn-sm btn-outline-primary" id="compose">Compose</button><button class="btn btn-sm btn-outline-primary" id="sent">Sent</button><button class="btn btn-sm btn-outline-primary" id="archived">Archived</button><a class="btn btn-sm btn-outline-primary" href="{% url 'logout' %}">Log Out</a><hr><div id="emails-view"></div><div id="compose-view"><h3>New Email</h3><form id="compose-form"><div class="form-group">                From: <input disabled class="form-control" value="{{ request.user.email }}"></div><div class="form-group">                To: <input id="compose-recipients" class="form-control"></div><div class="form-group"><input class="form-control" id="compose-subject" placeholder="Subject"></div><textarea class="form-control" id="compose-body" placeholder="Body"></textarea><input type="submit" class="btn btn-primary"/></form></div>{% endblock %}{% block script %}<script src="{% static 'mail/inbox.js' %}"></script>{% endblock %}

What i tried is putting the last line of code, in the event listener of DOMContentLoaded and this works fine. what is causing this problem why route is changing ?


Viewing all articles
Browse latest Browse all 18819

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>