我有一个表单,当检查组件时会显示纯文本,如下所示
class CompanySearchForm(forms.Form):
check = forms.BooleanField()
def __init__(self, *args, **kwargs):
super(CompanySearchForm, self).__init__(*args, **kwargs)
self.fields['check'].widget.attrs.update({"onclick": 'show_p()', 'id': 'check'})
我还有具有以下功能的js文件
function show_p() {
var checkBox = document.getElementById("check");
var texto = document.getElementById("text");
if (checkBox.checked == true){
texto.style.display = "block";
} else {
texto.style.display = "none";
}
}
我的模板:
{% extends 'base.html' %}
{% load static %}
{% block extra_styles %}
<script href="{% static 'js/ajax_ubigeo.js' %}"></script>
{% endblock %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
{{ form.check }}
</form>
<p id="text" style="display: none">hola</p>
{% endblock %}
我的问题是为什么 show_p()在 script 标记内和模板内起作用。但是,为什么不在外部 java脚本文件中?
答案 0 :(得分:-1)
它不在同一块中。您没有在实际的基本模板中呈现script标签。将所有内容包装在同一块中,或将脚本添加到基本模板中。
答案 1 :(得分:-1)
替换:
<script href="{% static 'js/ajax_ubigeo.js' %}"></script>
使用:
<script src="{% static 'js/ajax_ubigeo.js' %}" type="text/javascript"></script>
看看会发生什么。理由是:
href请求资源,例如网页,表单处理程序,块 引用参考页或样式表。在很多情况下(保存样式 表格),该链接将打开一个新网页,从该网页可以返回 应该使我们返回上一页。
src表示嵌入当前文档中的资源, 例如img,视频,音频或脚本。浏览器将分配 屏幕的实际面积取决于 嵌入式对象。 href没有此类规定。
此外,请确保该文件存在于您要告诉静态对象的位置。
如果仍不能解决问题,请发布您的base.html模板,或确保其中存在extra_styles块。呈现页面时,在查看页面的源代码时是否显示脚本块?
ref:https://discuss.codecademy.com/t/whats-the-difference-between-href-and-src-attributes/353244