изменение имени функции JavaScript или идентификатора элемента в шаблоне HTML приводит к тому, что он перестает работать - PullRequest
0 голосов
/ 18 октября 2019

Я занимаюсь разработкой приложения в Django. У меня есть странная проблема.

в моем шаблоне У меня есть:

<div class="form-group">
  <input name="Data_inserimento_entry" type="date" class="form-control" id="date_to_turn_into_toda" >              
</div>

<script type="text/javascript" src={% static "js/get_today_date.js" %}></script>
<script> get_today_date(date_to_turn_into_toda) </script> 

в файле js get_today_date.js, хранящемся в static> js> get_today_date.js Iиметь

function get_today_date(id_data) {
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear()+"-"+(month)+"-"+(day);
document.getElementById(id_data).value = today;
}

, когда я запускаю сервер и загружаю шаблон, во входном слоте отображается сегодняшняя дата. Я рад этому.

Если я прокомментирую любую из двух строк javascript в шаблоне, она больше не будет работать. Я рад этому.

А вот и странная часть

Если я изменю идентификатор, вот так:

<div class="form-group">
  <input name="Data_inserimento_entry" type="date" class="form-control" id="date_to_turn_into_today" >              
</div>

<script type="text/javascript" src={% static "js/get_today_date.js" %}></script>
<script> get_today_date(date_to_turn_into_today) </script> 

Это больше не работает. Почему?

И даже если я изменю имя функции в обоих скриптах, например:

<script type="text/javascript" src={% static "js/get_today_date.js" %}></script>
<script> get_today_date_ID(date_to_turn_into_today) </script> 

и

function get_today_date_ID(id_data) {
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear()+"-"+(month)+"-"+(day);
document.getElementById(id_data).value = today;
}

Это больше не работает. Почему?

Правильный ли синтаксис для вызова javascript?

Я забыл изменить идентификатор или имя функции в каком-то другом месте, кроме шаблона и файла javascript?

Примечание: функция в файле javascript и файле javascript имеет одинаковое имя (кроме расширения .js), это проблема?

Обновление:

в моей модели, у меня есть:

class mymodel(models.Model):

    Data_inserimento_entry = models.DateField(blank=False, null=False, default=timezone.now().date() )

Обновление:

здесь я выкладываю целый шаблон aggiungi_terminologia.html, отвечая накомментарий с просьбой дать дополнительные пояснения

    {% extends 'base.html'%} 

    {% block content %}

        <h1>Aggiungi terminologia in massa</h1>

        <!-- scarica template glossario -->


        <p>        
        <form method="get" action="static/files_for_download/template_glossario.xlsx">
        <div class="container"></div>
            <button type="submit" class="btn btn-success">Scarica template</button>
        </div>
        </form>
        </p>

        <div class="container">   
        <small id="inputHelp" class="form-text text-muted">NOTA: Non rinominare le colonne del template.</small>     
        </div>  


        <br>


        <!-- carica glossario -->
        <p>
        <form class="container" method="POST" enctype="multipart/form-data" >
            {% csrf_token %}

            <div class="file-upload-wrapper" id="input-file-now">

                <small id="inputHelp" class="form-text text-muted">Seleziona il template compilato con la terminologia da caricare.</small>                  
                <input type="file"  name="uploaded_glossary" id="input-file-now" data-max-file-size="5M" class="file-upload">

                <br><br> 


                <div class="form-group">

                     <input name="Data_inserimento_entry" type="hidden" class="form-control" id="date_to_turn_into_toda">              
                </div>



                <button type="submit" class="btn btn-primary">Carica glossario</button>
            </div>

        </form>
        </p>


        <br><br><br><br>

    <!-- Django tag load static -->
    {% load static %}  

    <!-- CSS -->
    <link rel="stylesheet" type="text/css" href={% static "css/searchbar_style.css" %}>
    <link rel="stylesheet" type="text/css" href={% static "css/upload_glossary_slot.css" %}>

    <!-- Javascript -->
    <script type="text/javascript" src={% static "js/get_today_date.js" %}></script>
    <script> get_today_date("date_to_turn_into_toda") </script> 


    {% endblock %}

Здесь я выкладываю весь свой шаблон base.html:

{% load static %}

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- favicon -->
    <!-- <link rel="shortcut icon" href="{% static 'img/gestisco_logo_round_favicon2.png' %}" /> -->
    <link rel="shortcut icon" href="{% static 'img/metaglossary_favicon_3.png' %}" />

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

    <title>G</title>
  </head>
  <body>


      <nav class="navbar navbar-expand-lg navbar-dark bg-dark">

        <!-- Pagina iniziale -->
        <!-- questa nel tutorial non c è -->


        <a class="navbar-brand" href="{% url 'home' %}">GESTI.S.CO Interreg IT-CH</a> 
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
          </button>

          <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">

                <!-- glossario -->
              <li class="nav-item">
                <a class="nav-link" href="{% url 'glossario' %}">Glossario<span class="sr-only">(current)</span></a>

              </li>

              <!-- Aggiungi terminologia -->
              <li class="nav-item">
                <a class="nav-link" href="{% url 'aggiungi_terminologia' %}">Aggiungi terminologia</a>
              </li>

              <!-- Aggiungi glossario -->
              <li class="nav-item">
                <a class="nav-link" href="{% url 'aggiungi_glossario' %}">Aggiungi terminologia in massa</a>
              </li>





            </ul>


          </div>
        </nav>


        <br/>


<!-- SEZIONE MESSAGGI -->

        {% if messages %}

          {% for message in messages %}


            {% if insert_attempt_output == "errato" %}
            <!-- form compilato in modo NON valido - messaggio rosso -->

                <div class="alert alert-danger" role="alert">
                    <button class="close" data-dismiss="alert">
                        <small><sup>[X]</sup></small>
                    </button>
                    {{message}}
                  </div>            

            {% else %}            
            <!-- form compilato in modo valido - messaggio verde -->

            <div class="alert alert-success" role="alert">
                <button class="close" data-dismiss="alert">
                    <small><sup>[X]</sup></small>
                </button>
                {{message}}
              </div>  


            {% endif %}

          {% endfor %}

       {% endif %}

      <br> 

    <!-- formattazione del body -->

    <div class="container">



        {% block content %}



        {% endblock %}



      </div>


    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

      <!-- css -->
      <link rel="stylesheet" type="text/css" href={% static "css/top_navbar_style.css" %}>

  </body>
</html>

1 Ответ

1 голос
/ 18 октября 2019

когда я запускаю сервер и загружаю шаблон, в слоте ввода появляется сегодняшняя дата. Я рад этому.

Я понятия не имею, как это могло бы работать, потому что, похоже, основная проблема у вас в том, что вы передаете переменную в функцию get_today_date вместо string (id),т.е. вместо

<script> get_today_date(date_to_turn_into_today) </script> 

звоните

<script> get_today_date('date_to_turn_into_today') </script> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...